C++跨文件调用模板函数提示undefined-reference
作者:互联网
问题
在一个基础头文件utils.h
中定义了模板函数,在另一个工程中调用时编译报错undefined reference to ...
原因
模板函数的特化必须在定义时完成,当模板函数和对应的调用在同一文件时,这一过程隐式发生。
而调用分离时生成的utils.o
中不包含对应的特化函数符号,自然无法编译通过。
解决
在utils.cpp
中实现函数后追加对应的特化方式
template <typename T>
bool_t function(const T& args)
{
// ...
}
template bool_t function<A>(const A& args);
template bool_t function<B>(const B& args);
参考
c++ - undefined reference to template function - Stack Overflow
标签:function,函数,reference,utils,C++,template,模板,undefined 来源: https://www.cnblogs.com/azureology/p/16355014.html