模板的前置声明
本帖最后由 stevenmtroy 于 2020-9-19 13:05 编辑请问这样写为什么编译器总报错:不可识别的模板定义/声明?
#include <iostream>
template <typename T> Test<T> operator++(Test<T>& t);
template <typename T>
class Test {
T a;
T b;
public:
Test(int a, int b)
{
this->a = a;
this->b = b;
}
void Print()const
{
std::cout << a << " , " << b;
}
template <typename T>
friend Test<T> operator++(Test<T>& t);
};
int main()
{
Test<int> test(0, 0);
(++test).Print();
}
template <typename T> Test<T> operator++(Test<T>& t)
{
return Test<T>(++t.a, ++t.b);
} 本帖最后由 昨非 于 2020-9-19 12:11 编辑
抱歉看错了{:10_245:} 是要实现++操作符的重载吗?
#include <iostream>
//template <typename T> Test<T> operator++(Test<T>& t);
template <typename T>
class Test {
T a;
T b;
public:
Test(T a, T b)
{
this->a = a;
this->b = b;
}
Test<T> & operator ++()
{
a++;
b++;
return * this;
}
void Print()const
{
std::cout << a << " , " << b;
}
// template <typename T>
// friend Test<T> operator++(Test<T>& t);
};
int main()
{
Test<int> test(0, 0);
(++test).Print();
return 0;
}
//template <typename T> Test<T> operator++(Test<T>& t)
//{
// return Test<T>(++t.a, ++t.b);
//} 我已经调出来了, 不过还是要感谢。
页:
[1]