我用的vscode,运行时28行这里报错:redefinition of'<class T1,class T2> void printperson(person<T1,T2>&)
思考了半天没想到是哪里错了,希望有人能够指正。
#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)
{
cout<<p.name<<" "<<p.age<<endl;
}
template<class T1,class T2>
class person
{
friend void printperson<>(person<T1,T2>&p);
public:
person(T1 name,T2 age)
{
this->name=name;
this->age=age;
}
private:
T1 name;
T2 age;
};
template<class T1,class T2>
void printperson(person<T1,T2>&p)
{
cout<<p.name<<" "<<p.age<<endl;
}
void test()
{
person<string,int>p("jerry",20);
printperson(p);
}
int main()
{
test();
return 0;
}