提问人:Jan 提问时间:8/28/2015 更新时间:8/28/2015 访问量:758
未定义对标头中定义的模板函数的引用
Undefined reference to template function defined in header
问:
我得到了这个调用的未定义引用:
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 上寻求帮助几乎毫无用处,因为所有结果都来自将模板函数的定义放在源文件中的人。
我可以通过使函数静态来消除错误,但我对此感到不安。这是正确的方法还是有更好的方法?
答: 暂无答案
评论
SiteType&
m_type
是 类型的成员。这既没有重载也没有专用化,因此应调用模板化回退。m_val
SiteType
char const*
char const*
char const*