【发布时间】:2014-03-10 11:41:12
【问题描述】:
给定here做简单的模板代码;只是我正在编写单独的声明和定义
这是我的头文件
template <typename T>
class SmartPointerGen
{
private:
T* pData;
public:
SmartPointerGen(T* pValue);
~SmartPointerGen();
T& operator* ();
T* operator-> ();
};
这就是我定义方法的方式
#include "SmartPointer_Generic.h"
template <typename T>
SmartPointerGen<T>::SmartPointerGen(T* pValue) : pData(pValue)
{
}
template <typename T>
SmartPointerGen<T>::~SmartPointerGen()
{
delete pData;
}
template <typename T>
T& SmartPointerGen<T>::operator* ()
{
return *pData;
}
template <typename T>
T* SmartPointerGen<T>::operator-> ()
{
return pData;
}
在main() 中,我尝试使用相同的
SmartPointerGen<Person> pPersonGen(new Person("WTF Again"));
我认为问题出在SmartPointerGen 类的定义上,我尝试遵循this 语法来定义类外的模板化方法,但链接器说析构函数和重载运算符的符号未解析,(但不适用于构造函数)。
错误:(只显示1个,其他都差不多)
main.obj : error LNK2019: unresolved external symbol "public: __thiscall SmartPointerGen<class Person>::SmartPointerGen<class Person>(class Person *)" (??0?$SmartPointerGen@VPerson@@@@QAE@PAVPerson@@@Z) referenced in function _main
【问题讨论】:
标签: c++ templates linker-errors unresolved-external