You need to use the export keyword. However, I don't think G++ has proper support, so you need to include the template function's definition in the header so the translation unit can use it. This is because the <int> 'version' of the template hasn't been created, only the <typename T> 'version.'
An easy way is to #include the .cpp file. However, this can cause problems, e.g. when other functions are in the .cpp file. It will also likely increase the compile time.
A clean way is to move your template functions into its own .cpp file, and include that in the header or use the export keyword and compile it separately.
c++中template不支持声明和实现分别放在不同的文件中。可以通过include cpp文件解决这个问题。
本文探讨了C++中模板函数的定义与实现通常不能分离的问题,并提供了几种解决方案,包括直接将实现包含在头文件中或是使用特殊的导出关键字。

3352

被折叠的 条评论
为什么被折叠?



