模板类的构造函数在声明同时定义与单独定义有何区别?
有如下定义的模板类:
//Vector.h
template<typename T>
class Vector
{
public:
Vector(void);
……
private:
T *elements;
T *first_alloc;
T *end;
};
//Vector.cpp
template<typename T>
Vector<T>::Vector(void) : Vector<T>::elements(0), Vector<T>::first_alloc(0), Vector<T>::end(0)
{
}
在main函数中初始化一个模板实例:
Vector<int> intVec;
出现如下错误:error LNK2019: 无法解析的外部符号 "public: __thiscall Vector<int>::Vector<int>(void)" (??0?$Vector@H@@QAE@XZ),该符号在函数 _main 中被引用
但是,把构造函数的定义移到声明部分:
Vector(void) : elements(0), first_alloc(0), end(0){};
编译就能通过。
非常郁闷,在线等~
[解决办法]
http://www.cppblog.com/michaelgao/archive/2008/10/09/63571.html