今天在实现类模板特例化的时候遇到一个问题,就是把类模板函数实现放到类的cpp文件中,然后在main函数中使用这个类的时候,就会出现无法解析的外部符号:函数名(xxxx)等错误,那么出现这个错误的原因是什么呢?
原因就是现在的编译里不支持模板函数的声明和实现分开,要像上面那样使用类成员函数,有以下两种方法
1. 在使用这个类的文件中包含#include“xxxx.cpp”
2.在类头文件末尾包含模板实现函数'#include"xxxx.cpp"
这两种方法都可以解决上面的问题。
(若编译通过 链接未通过 应该考虑外部链接的情况 从项目的链接,项目的属性设置考虑 而不是从代码本身的角度考虑)
(如果使用vs的IDE 可以在右键项目-属性-链接器的下面 着重修改常规-附加库目录 输入-附加依赖项)
下面我们来说下error2019会在什么时候出现?
1. 在使用动态库时候,没有包含相应的lib
解决方案:#pragma comment( lib,"xxxx.lib");
2.函数只进行了申明而没有进行定义
解决方案:为申明的函数添加函数实现
3.缺少.obj目标文件
解决方案:从新设置文件编译的路径,然后重新编译