自定义一个模板类, 声明和定义不能分别放到.h和.cpp文件中吗?
看我下面的代码:
//queue.h
template <class Type>
class TQueue
{
public:
TQueue(){}
~TQueue(){}
void add(const Type& queueItem);
...
};
//queue.cpp
#include "queue.h"
template <class T>
void TQueue<T>::add(const T& queueItem)
{
...
}
//main.cpp
#include "queue.h"
int main(int argc, char* argv[])
{
TQueue<int>* p = new TQueue<int>();
p->add( 2 );
delete p;
return 0;
}
感觉很正常的使用啊, 但编译时却出现如下错误:
Linking...
q.obj : error LNK2001: unresolved external symbol "public: void __thiscall TQueue<int>::add(int const &)" (?add@?$TQueue@H@@QAEXABH@Z)
Debug/q.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
q.exe - 2 error(s), 0 warning(s)