晚上搞了半天才发现:原来类模板不能分文件写!
如:
template <class Type>
class TNumber
{
public:
~TNumber()
{
}
void SetItem(Type);
Type GetItem();
private:
Type m_item;
};
写到casual.h中f。而实现文件写入casual.cpp中,那么在main文件中调用时就会提示外部命令无法解析的错误。
如:
1>main.obj : error LNK2019: 无法解析的外部符号 "public: int __thiscall TNumber<int>::GetItem(void)" (?GetItem@?$TNumber@H@@QAEHXZ),该符号在函数 _main 中被引用
看到一个解释是:
因为模板类在编译的时候就相当于宏定义,分两个文件是找不到的。
解决办法可以:
1.类模板定义和实现在同一文件。
2.在main文件中连续包含定义文件和实现文件.
#include "casual.h"
#include "casual.cpp"
int main()
{
TNumber<int> obj1;
cout << obj1.GetItem() << endl;
return 0;
}