#include<iostream>
#include <string>
using namespace std;
template<class T>
class Mylist
{
public:
Mylist(T x,T y):a(x),b(y){};
void print();
private:
T a;T b;
};
template<class T>//不可少
void Mylist<T>::print()
{
cout<<"a="<<a<<" "<<"b="
<<b<<endl;
}
void main(void)
{
Mylist<string> mylist("string1","string2");
Mylist<int> mylist2(2,5);
mylist.print();
mylist2.print();
system("pause");
}声明和定义都要放在同一个 文件中,否则会出现错误提示 error LNK2019: 无法解析的外部符号。
PS:如果非要将声明和定义分开,那么在 .cpp 文件中需要具体定义出该模板支持什么类型,比如在 .cpp 文件末尾添加 template class CTest<int> ,如果想用其他类型,也要把相应的类型对应的语句写在 cpp 末尾。