首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

模板种的构造函数在声明同时定义与单独定义有何区别

2012-09-17 
模板类的构造函数在声明同时定义与单独定义有何区别?有如下定义的模板类://Vector.htemplatetypename Tc

模板类的构造函数在声明同时定义与单独定义有何区别?
有如下定义的模板类:
//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

热点排行