C++学习记录-模板-类模板与友元问题
**一、全局函数类内实现:**直接实现即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| template<class T1> class chara {
friend void printinfo(chara<T1> p) { cout << p.name << endl; }
private: T1 name;
public: chara(T1 nam) { name = nam; } };
|
二、全局函数类外实现:应使用前向声明,让编译器提前知道类和函数的存在
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
|
template<class T1> class chara;
template<class T1> void printinfo(chara<T1> p);
template<class T1> class chara {
friend void printinfo<>(chara<T1> p); private: T1 name;
public: chara(T1 nam) { name = nam; } };
template<class T1> void printinfo(chara<T1> p) { cout << p.name << endl; }
|