c++,求指点
#include<iostream>
using namespace std;
template<typename T>
class T_counter
{
public:
void setdate(T i){date=i;}
void print();
friend T_counter operator +(const T_counter &c1,const T_counter &c2);
friend T_counter operator -(const T_counter &c1,const T_counter &c2);
friend T_counter operator *(const T_counter &c1,const T_counter &c2);
friend T_counter operator /(const T_counter &c1,const T_counter &c2);
T_counter &operator =(const T_counter c3);
private:
T date;
};
template<typename T>T_counter operator +(const T_counter &c1,const T_counter &c2)
{T_counter p;p.date=c1.date+c2.date;T_counter p
return p;}
template<typename T> T_counter operator -(const T_counter&c1,const T_counter &c2)
{T_counter p;p.date=c1.date-c2.date;
return p;}
template<typename T> T_counter operator *(const T_counter &c1,const T_counter &c2)
{T_counter p;p.date=c1.date*c2.date;
return p;
}
template<typename T> T_counter operator /(const T_counter *c1,const T_counter &c2)
{T_counter p;p.date=c1.date/c2.date;
return p;
}
template<typename T>
T_counter &operator =(const T_counter c3)
{date=c3.date;
return *this;}
template<typename T>
void T_counter::print()
{cout<<date<<endl;}
template<typename T>
int main()
{T a ,b;T_counter p1,p2,c;
cin>>a>>b;
p1.setdate(a);p2.setdate(b);
c=p1+p2;
c.print();
1错误error C2955: “T_counter”: 使用类 模板 需要 模板 参数列表d:\pro\22\22\22.cpp16
2错误error C2801: “operator =”必须是非静态成员d:\pro\22\22\22.cpp33
3错误error C2244: “T_counter<T>::print”: 无法将函数定义与现有的声明匹配d:\pro\22\22\22.cpp36
c=p1-p2;
c.print();
c=p1*p2;
c.print();
c=p1/p2;
c.print();
}
[解决办法]
模板需要实例化才能使用
T a ,b;T_counter p1,p2,c;改成int a, b; T_counter<int> p1, p2, c;试试