C/C++教程

C++跨文件调用模板函数提示undefined-reference

本文主要是介绍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

这篇关于C++跨文件调用模板函数提示undefined-reference的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!