模板类出现undefined reference或无法解析的外部符号错误

今天使用模板类创建双向循环链表时碰到了一个大坑。按照一般思维,将类的声明放在.h文件中,将函数功能的实现及定义放在.cpp文件中。代码编写完成后调试,却碰到了undefined reference to...(在VS中报错无法解析的外部符号...)

在网上查了半天才知道,原来是模板类的问题。对于普通的类,即使声明和定义分别位于.h和.cpp文件,在main.cpp中只需要把类的头文件用#include命令包含就行了;但对于模板类,由于模板类的实现不是函数,因此cpp执行文件不能单独编译。也就是说,编译器不能通过h头文件来找到并且编译对应的cpp执行文件。

解决办法有两种: 
1. 把模板类的定义也放在头文件中,见代码中Vector.h部分被注释的代码段 
2. 如果实在想把模板类的声明和定义(实现)分开,则需要在main.cpp中用#include命令将模板类的cpp文件包含进来

参考自使用Dev C++编译C++工程时出现undefined reference 错误

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章