分析——
实际上,VC对于模板类的支持有一定的缺陷,在使用中,需要将类的定义和实现都写在头文件中才能正确编译。
解决——
1、如“知识点分析”所述,将Item.cpp中的类实现内容考到Item.h中即可。
2、也可以仍然保持类的定义和实现分别放在头文件和cpp文件中的状态。但是在cpp文件的末尾需要加上这样的语句:template class Item<Actual_Type_Name>;
例如,如果你希望使用int和float类型来实例化模板类型,就在cpp末尾加上:
template class Item<int>;
template class Item<float>;
如果想用其他类型,也要把相应的类型对应的语句写在cpp末尾。
注意:上述第2种情况只用实例化模板类型即可,如使用的是有参构造函数,也无需声明参数。