错误:
代码:
Person.h
#pragma once
#include <iostream>
using namespace std;
template<class T1,class T2>
class Person
{
private:
T1 mName;
T2 mAge;
public:
Person(T1 name, T2 age);
void Show();
};
Person.cpp
#include "Person.h"
template<class T1,class T2>
Person<T1, T2>::Person(T1 name, T2 age) {
this->mName = name;
this->mAge = age;
}
template<class T1,class T2>
void Person<T1, T2>::Show() {
cout << "Nmae=" << this->mName << ",Age=" << this->mAge << endl;
}
main.cpp
#include "Person.h"
void main(void) {
Person<string,int> p("aaa", 23);
p.Show();
}
解决方案:
只需要改变main.cpp头文件。
#include "Person.h"
改为
#include "Person.cpp"
修改后的main.cpp
#include "Person.cpp"
void main(void) {
Person<string,int> p("aaa", 23);
p.Show();
}
结果:
原因:与以下有关。
1.编译器问题;
2.函数模板调用;
因为程序没有生成具体的模板函数Person<string,int>,因此出现链接问题。