I get linker error if I define constructor\destructor of template class outside the class. Is it not allowed? I use Visual studio 2010.
error 1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall Tree::~Tree(void)" (??1?$Tree@H@@QAE@XZ) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "public: __thiscall Tree::Tree(void)" (??0?$Tree@H@@QAE@XZ) referenced in function _main
In .h file
template <class T>
class Tree{
public:
Tree(void);
~Tree(void);
T x;
};
in .cpp file
#include "Tree.h"
template <class T> Tree<T>::Tree(void){
}
template <class T> Tree<T>::~Tree(void){
}
in main.cpp file
#include "Tree.h"
int main(){
Tree<int> t;
return 0;
}