关于函数模版编译出现链接错误
2017-03-14 19:39
295 查看
问题在于分离编译,将类.h与.cpp分离编译便会出错产生如此的错误 (编译不出错链接出错):
Test.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall Tree<int>::~Tree<int>(void)" (??1?$Tree@H@@UAE@XZ)
查资料说是链接实体在多个文件链接时产生多义错误,解决方法就是将定义与实现写在一起(构造函数与析构函数别忘加”{}”)
多数编译器不支持类模板分离编译,所以类模板直接在声明时定义就不会出现上述错误了
凡是形如此类的错误基本都是因为函数定义出问题
.h与.cpp分离编译,mian函数只include了.h而没有.cpp有时也会出现如上的错误
所以如果出现上述错误就先检查类中函数在定义上是否出现问题
------------------------------------------------------------------------------------------------------------------------------------
在书的附录处发现有方法进行类模板分离编译:
在.cpp文件中如此书写即可:
template <typename Obj>
Hen<Obj>::Hen()
{ ... }
特别的,即使在模板被实例化时也没有被扩展,只有每个成员函数被调用时才会扩展
Test.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall Tree<int>::~Tree<int>(void)" (??1?$Tree@H@@UAE@XZ)
查资料说是链接实体在多个文件链接时产生多义错误,解决方法就是将定义与实现写在一起(构造函数与析构函数别忘加”{}”)
多数编译器不支持类模板分离编译,所以类模板直接在声明时定义就不会出现上述错误了
凡是形如此类的错误基本都是因为函数定义出问题
.h与.cpp分离编译,mian函数只include了.h而没有.cpp有时也会出现如上的错误
所以如果出现上述错误就先检查类中函数在定义上是否出现问题
------------------------------------------------------------------------------------------------------------------------------------
在书的附录处发现有方法进行类模板分离编译:
在.cpp文件中如此书写即可:
template <typename Obj>
Hen<Obj>::Hen()
{ ... }
特别的,即使在模板被实例化时也没有被扩展,只有每个成员函数被调用时才会扩展
相关文章推荐
- C++中模板类使用友元模板函数 和友员非模版函数!使用不当出现编译错误:无法解析的外部符号…
- VS编译Qt时若主函数为wmain时出现链接错误,找不到main入口函数
- 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
- 关于问题short s1 = 1; s1 = s1 + 1;出现编译错误,而 short s1 = 1; s1 += 1;不出现编译错误。
- 编译和链接 - 解决出现的LNK2005“符号已定义”错误 2
- 在VS2012中创建一个MFC动态链接项目(.dll)后,编译出现一大堆莫名其妙的错误的解决方法
- 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
- 命令行编译链接,出现LNK2019错误,怎样解决?
- Qt Creator 编译 ROS 包出现链接错误解决办法
- 关于cocos2d-x3.2在NDK10下编译出现的错误的解决方法
- 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
- 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
- 编译和链接 - 解决出现的LNK2005“符号已定义”错误 3
- vs2010编译时出现错误提示:error C2470: “xx”: 看起来像函数定义,但没有参数列表;跳过明显的函数体
- 关于VC2008编译出现错误“error C2664: ” 的处理方法:
- Android中使用AlertDialog,使用函数setButton()出现的关于“new OnClickListener"错误
- 关于函数的参数为类的引用时编译错误的分析
- 【对象模型】C++模版的编译链接过程——编译器真的会检查所有tocken层面的错误么?
- 使用g++编译C/C++程序,链接时出现undefined reference to错误
- 关于ubuntu16.04编译2进制文件时,出现“加载共享库时出错”错误的解决