对标头中定义的模板函数的未定义引用

时间:2015-08-28 15:26:10

标签: c++ templates linker c++14 undefined-reference

我正在为此调用获取未定义的引用:

Argonauts::Runtime::handleParseObject(m_val.m_type)

handleParseObject函数在包含上述行的文件所包含的头文件中定义(在Argonauts::Runtime命名空间内):

template <typename Type> HandleParseAction handleParseObject(Type &) { return HandleParseAction("Unexpected value of type 'object'"); }

存在过载的函数,这个模板函数应该是任何没有重载变量的类型的回退。

错误消息:

undefined reference to `Argonauts::Runtime::HandleParseAction Argonauts::Runtime::handleParseObject<SiteType>(SiteType&)'

搜索SO和使用Google的帮助几乎没用,因为所有结果都来自将模板功能定义放在源文件中的人。

我可以通过使函数静态来摆脱错误,但我对此感到不安。这是正确的做法还是有更好的方法?

0 个答案:

没有答案