[2016-04-23][C++类模板的一些事儿]
template <typename T>
class Array{
T* p;
} ;
<类型>
来指明类型
Array<int> a;
template <typename T> T a;
cin>>a;//‘ERROR:a还没有实例化‘,
error C2679: 二进制“<<”: 没有找到接受“Array<T>”类型的右操作数的运算符(或没有可接受的转换)
就是声明的模板T没有起到作用,无法识别,这里原因由于能力问题不能想通,但是能找到解决办法,(管他为什么,学会正确的姿势就OK了)
这里就是把<<重载的函数声明称函数模板
friend ostream & operator<<(ostream &os,const Array<T> & a){
os<<"hongyang\n";
return os;
}
friend ostream & operator<<(ostream &os,const Array<T> & a){
// os<<a.Date;错误!!!
os<<a.getDate();
return os;
}
资料:
http://www.cnblogs.com/xkfz007/articles/2534322.html
原文:http://www.cnblogs.com/qhy285571052/p/e717d772b45557377c2f60d5edf4da47.html