类模板+友元,全局函数类内实现
#include<iostream>
#include<string>
using namespace std;
template<class T1, class T2>
class Person {
friend void PrintPerson(Person<T1, T2>& p) {
cout << p.m_Name << p.m_Age << endl;
}
private:
T1 m_Name;
T2 m_Age;
public:
Person(T1 m_Name, T2 m_Age) {
this->m_Name = m_Name;
this->m_Age = m_Age;
}
};
void test() {
Person<string, int> p = {"tom", 18};
PrintPerson(p);
}
int main() {
test();
}
类模板+友元,全局函数类外实现
#include<iostream>
#include<string>
using namespace std;
template<class T1, class T2> class Person;
template<class T1, class T2> void PrintPerson(Person<T1, T2>& p);
template<class T1, class T2>
class Person {
friend void PrintPerson<>(Person<T1, T2>& p); //模板函数
//friend void PrintPerson(Person<T1, T2>& p); //普通函数
private:
T1 m_Name;
T2 m_Age;
public:
Person(T1 m_Name, T2 m_Age) {
this->m_Name = m_Name;
this->m_Age = m_Age;
}
};
template<class T1, class T2>
void PrintPerson(Person<T1, T2>& p) {
cout << p.m_Name << p.m_Age << endl;
}
void test() {
Person<string, int> p = {"tom", 18};
PrintPerson(p);
}
int main() {
test();
}