C++模板类

C++模板类

晚上搞了半天才发现:原来类模板不能分文件写!
如:
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;
}

你可能感兴趣的:(C++模板类)