#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
//要让编译器看到Person类声明
template<class T1, class T2> class Person;
template<class T1, class T2> void print(Person<T1, T2>& p);
template<class T1, class T2>
class Person
{
//这里要加上<>
//友元函数类内实现 利用空参数列表 告诉编译器 模板函数的声明
friend void print<>(Person<T1, T2>& p); //普通函数声明
public:
Person(T1 age, T2 name)
{
this->age = age;
this->name = name;
}
private:
T1 age;
T2 name;
};
template<class T1, class T2>
void print(Person<T1, T2>& p)
{
cout << p.name << endl;
cout << p.age << endl;
}
void test()
{
Person<string, int>p1("rosi", 100);
print(p1);
}
int main()
{
test();
system("pause");
return 0;
}
友元函数碰到模板函数 类外实现
最新推荐文章于 2022-05-28 16:38:19 发布