1.友元函式在類的定義體中實現。
using namespace std;
template class queue
private:
size_t length;
};//#include "queue.cpp"
#endif //_queue_h_
2. 友元函式在類中宣告在cpp檔案中實現
#ifndef _queue_h_
#define _queue_h_
#include using namespace std;
template class queue
private:
size_t length;
};//#include "queue.cpp"
#endif //_queue_h_
template
ostream& operator<<(std::ostream& out, const queue& que) //注意《之後沒有
3. 對於非型別形參也是如此。
#ifndef _screen_h_
#define _screen_h_
#include #include using namespace std;
template < int hi, int wid>
class screen
;#endif //_screen_h_
templateistream& operator>> (istream& is, screen& scr) //注意,<< 後面不用加,否則報錯
templateostream& operator<< (ostream& out, const screen& scr) //注意,<< 後面不用加,否則報錯
模板類中的友元函式
模板類中友元函式不要濫用,最好只用來過載左移和右移運算子 和 如果用於普通友元函式過載,會非常麻煩,即使類模板定義和宣告分開,也建議都寫在.h或.hpp檔案中,即要保證模板類的定義和宣告在乙個檔案中,否則,將不能找到函式的定義,這和模板的二次編譯有關。參見官方的stl庫風格可知,它也遵循這一原則,即...
模板類的 友元模板函式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 include include usingnamespacestd template classt c...
模板類的 友元模板函式
模板類的 友元模板函式 第二名 12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 include include usingnamespacestd te...