为了练习刚刚学的模板,就把以前写的一个矩阵的代码拿来试验,结果发现并不是那么容易,特别是当,函数不是类的成员函数时,就出了问题。类中定义友元friend ostream& operator<<(ostream&,const matrix&);
而函数定义为template<typename T>
ostream& operator<<(ostream& os,const matrix<T>& rhs)
{
for(int ix=0;ix!=4;++ix)
{
for(int iy=0;iy!=4;++iy)
os<<rhs.array1[ix][iy]<<" ";
os<<endl;
}
return os;
结果仍然报错,实在不明白是为什么,然后在网上查出,将friend ostream& operator<<(ostream&,const matrix&);改为friend ostream& operator<< <>(ostream&,const matrix&);就行了,虽然还是不明白为什么,不过觉得自己还是蛮有收获的,不管学了什么,不实际操练起来,你就能不会发现其中的一些隐藏的要点!看似简单的东西,只有真正的试验后你才能真切的感受到它的奥秘!
本文探讨了在C++编程中使用模板与友元函数来实现矩阵类的输出操作符的过程。作者通过实践发现了非成员函数作为友元时的正确声明方式,并分享了调试过程中的体会。
1554

被折叠的 条评论
为什么被折叠?



