![](https://i-blog.csdnimg.cn/blog_migrate/18b11092ad9fcc91b688d30bdfb32e2f.png)
以上问题出现的原因在于C++的类模板的机制,类模板的创建时机,类模板是在函数调用阶段创建的,分文件编写时链接不到。
![](https://i-blog.csdnimg.cn/blog_migrate/685c0d9055a94802ff958bb0f782b83f.png)
如果是新手正在写template<class T>的分文件编写,对应上述问题有以下解决方案:
![](https://i-blog.csdnimg.cn/blog_migrate/5d4b13767efa4a365202442dc5c51b70.png)
解决方案一:"sqlist.h"文件换为"sqlist.cpp"文件
![](https://i-blog.csdnimg.cn/blog_migrate/f90d24721b466be74591193cfb892d9f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/5f18754a332651e233a0f8e4616baec8.png)
解决方案二:凡是用到类模板的,将声明和实现都写到一个文件里,也就是把之前sqlist.h和sqlist.cpp两者的内容都写到sqlist.h,并把sqlist.h改为sqlist.hpp
![](https://i-blog.csdnimg.cn/blog_migrate/5f6c9ebd89412638613dd10a408d4d91.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8f0f375c58d5d20b689679e1404b1d92.png)
以上问题出现的原因在于C++的类模板的机制,类模板的创建时机,类模板是在函数调用阶段创建的,分文件编写时链接不到。
如果是新手正在写template<class T>的分文件编写,对应上述问题有以下解决方案:
解决方案一:"sqlist.h"文件换为"sqlist.cpp"文件
解决方案二:凡是用到类模板的,将声明和实现都写到一个文件里,也就是把之前sqlist.h和sqlist.cpp两者的内容都写到sqlist.h,并把sqlist.h改为sqlist.hpp