最近在看C++类模板的定义与实现,在按照正常的类的流程进行分离时发现“LNK2019: 无法解析的外部符号”这个错误。
解决方案:
1. 如果坚持使用分离的方法解决,可以在main.cpp中的include “template_class.h”要修改成"template_class.cpp",就不会出现上述错误。
2. 此外可以把模板的定义和实现都放到一个头文件(.h)中,之后再在main.cpp中使用,也不会有问题。
我查找了很多资料,发现,出现这个问题的原因是:
一:在VS中,因为C++标准明确表示,当一个模板不被用到的时候它就不应该被实例化出来(可点击链接查看详情);
二:此外,目前VS中不支持export template<class T>形式,不知道未来会不会支持,也有网友指出“现在没有未来也不一定有的说法”;