类模板碰到友元函数

xiaoxiao2021-02-28  114

当类模板碰到友元函数时,普通友元函数必须提前声明。

template<class T> class MyClass;//声明类模板存在

//声明友元函数存在 template<class T> void fun(MyClass<T> myclass); template<class T> ostream& operator<<(ostream& os, MyClass<T> &myclass); template<class T> class MyClass { public: T ta; //普通友元函数,必须提前声明 friend void fun(MyClass<T> myclass); //左移操作符在VS下不需提前声明,但GCC编译器需要提前声明 friend ostream& operator<<<>(ostream& os, MyClass<T> &myclass);//空模板语法 MyClass(T a) { ta = a; } }; template<class T> void fun(MyClass<T> myclass) { cout << myclass.ta << endl; } template<class T> ostream& operator<<(ostream& os, MyClass<T> &myclass) { os << myclass.ta << endl; return os; } void test() { MyClass<int> myclass(20); fun<int>(myclass); cout << myclass; }
转载请注明原文地址: https://www.6miu.com/read-51202.html

最新回复(0)