C++模板,不同的声明和定义,链接器无法解析符号
C++ Template, different declaration and definition, linker not able to resolve the symbols
做这里给出的简单模板代码;只是我正在编写单独的声明和定义
这是我的头文件
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
类的定义上,我尝试按照此语法在类外定义模板化方法,但链接器说析构函数和重载运算符的未解析符号(但不是构造函数)。
错误:(仅显示 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
您必须在声明模板的同一头文件中定义模板 - 这是语言限制。
相关文章:
- 体系结构x86_64的未定义符号:链接器错误
- 如何防止 CMake 在构建时(而不是在安装时)为共享库创建符号链接?
- 如何将空文件夹和符号链接添加到存档 - libarchive
- boost::存在符号链接不取消引用
- c++ ReadDirectoryChangesW on directory,带有目录的符号链接
- 如何将libc++与调试符号链接起来?
- 如何使用 GetFinalPathNameByHandle 解析指向本地目录的符号链接?
- 在可执行文件中使用带有符号链接的相对路径
- 架构x86_64的未定义符号链接constexpr std :: array
- 使用dlopen()的符号链接
- 可能的 GCC 链接器错误会导致将弱符号和局部符号链接在一起时出错
- g++ 编译:我可以链接到带有符号链接二进制文件的目录吗?
- 如何在目录上迭代并识别或省略NTFS连接(符号链接ish)
- 与两个符号链接.一个在存档文件中定义
- 单一实例对象的未解决外部符号链接错误
- C++隐藏的符号链接
- 尽管存在符号链接,但 ld 无法加载库
- 导出类静态常量的未解决外部符号链接错误(仅限某些项目)
- 使用 boost 解析符号链接时,结果不等于原始路径名
- OpenCV 模块作为符号链接会导致 cmake 错误