1.问题原因:
https://blog.csdn.net/qq_41884002/article/details/99816073
简而言之,在C++中由于模板类的自身不确定性,当一个模板没有被调用时,它就不会被具体化出来,也就是说在一个编译单元里,如果使用模板类的函数没有被其他函数调用的话,是没有生成二进制代码的,因为编译器并不知道这个函数是属于哪个类型(int,float,等等),所以无法给这个函数分配合适的内存空间,只有当其他函数调用模板类的函数时,才能确定类型,模板类才能被具现化。
2.解决办法:
1.在主函数包含头文件时将实现模板类的函数cpp文件也包含进来。原因:一个编译单元内包含了.cpp文件以及被include 的头文件,如果将实现模板类的函数文件.cpp也包含进来,那么主函数调用就给了模板类函数一个具现化的机会。
2.将模板类的实现方法写在头文件里面。原因:同上,将实现写在头文件里面,那么主函数调用就给了模板类函数一个具现化的机会。
3.在实现模板类的文件中调用一下模板类。原因:调用一下让模板类函数得到具现化。
参考:
1.https://blog.csdn.net/qq_41884002/article/details/99816073