当输入输出运算符在头文件中写时,如果没有#include <iostream>和using namespace std;程序将会有100多个bug;当输入输出运算符重载为模板类的友元函数时,如果只是在类体中写为ostream& operator<<(ostream& out,MyClass<T>& c),编译时将会出现连接错误,解决方法有多种,我只掌握了两种:
1.不使用运算符重载的方式,直接定义两个Input,Output函数来达到目的
2.改变友元与模板类的对应关系为多对多
如以下代码:
template <class T>
class Myclass
{
private:
........
public:
.........
template <class U>
friend ostream& operator<<(ostream& out,Myclass<U> m);
}
.........
template <class U>
ostream& operator<<(ostream& out,Myclass<U> m)
{
.....
}
以上两种方法可以解决这种问题