關於模板類中輸入輸出運算子的過載
阿新 • • 發佈:2018-12-15
當輸入輸出運算子在標頭檔案中寫時,如果沒有#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)
{
.....
}
以上兩種方法可以解決這種問題