我在学习函数模板的时候,代码完全和视频里面敲的一样,希望有人能告诉我怎么改正这些错误
我在学习类模板成员函数类外实现时,遇到了三个错误,不会改正,希望有人帮一下
#include
template<class T1,class T2>
class Person
{
public:
Person(T1 name,T2 age);
void showPerson();
T1 m_Name;
T2 m_Age;
};
//构造函数类外实现
template<class T1,class T2>
Person::Person(T1 name,T2 age)
{
this->m_Name=name;
this->m_Age=age;
}
template<class T1,class T2>
void Person::showPerson()
{
cout<<"name:"<<this->m_Name<<"age:"<<this->m_Age<void test01()
{
Personint > P("Tom",20);
P.showPerson();
}
int main()
{
test01();
system("pause");
return 0;
}
错误 1 error C2143: 语法错误 : 缺少“,”(在“.”的前面)
错误 2 error C2649: “typename”: 不是“class”
错误 3 fatal error C1004: 发现意外的文件尾
我增加了两行的初始声明 + 第13行的点改为逗号。然后就跑起来了:
效果如下:
代码如下:
#include<string>
#include<iostream> // 增:初始声明
using namespace std; // 增:初始声明
template<class T1,class T2>
class Person
{
public:
Person(T1 name,T2 age);
void showPerson();
T1 m_Name;
T2 m_Age;
};
//构造函数类外实现
template<class T1,class T2>
Person<T1,T2>::Person(T1 name,T2 age) // 改:这一行的点,应该是逗号
{
this->m_Name=name;
this->m_Age=age;
}
template<class T1,class T2>
void Person<T1,T2>::showPerson()
{
cout<<"name:"<<this->m_Name<<"age:"<<this->m_Age<<endl;
}
void test01()
{
Person<string,int> P("Tom",20);
P.showPerson();
}
int main()
{
test01();
system("pause");
return 0;
}