晚上搞了半天才發(fā)現(xiàn):原來類模板不能分文件寫!
如:
template <class Type>
class TNumber
{
public:
~TNumber()
{
}
void SetItem(Type);
Type GetItem();
private:
Type m_item;
};
寫到casual.h中f。而實現(xiàn)文件寫入casual.cpp中,那么在main文件中調用時就會提示外部命令無法解析的錯誤。
如:
1>main.obj : error LNK2019: 無法解析的外部符號 "public: int __thiscall TNumber<int>::GetItem(void)" (?GetItem@?$TNumber@H@@QAEHXZ),該符號在函數(shù) _main 中被引用
看到一個解釋是:
因為模板類在編譯的時候就相當于宏定義,分兩個文件是找不到的。
解決辦法可以:
1.類模板定義和實現(xiàn)在同一文件。
2.在main文件中連續(xù)包含定義文件和實現(xiàn)文件.
#include "casual.h"
#include "casual.cpp"
int main()
{
TNumber<int> obj1;
cout << obj1.GetItem() << endl;
return 0;
}