我试图在非模板类中包含模板成员。这是一个例子:
·H
class ncScript {
public:
template<typename T> void RegisterConstant( T value, const char *N );
};
的.cpp
template<>
void RegisterConstant<int>( int value, const char * N ) {
// Do something.
}
template<>
void RegisterConstant<bool>( bool value, const char * N ) {
// Do something.
}
// and so on
但是当我尝试使用它时:
_luaCache["myluafile"].RegisterConstant( 13, "myvariable" );
我在Xcode(LLVM编译器)中收到以下错误:
Explicit specialization of 'RegisterConstant<int>' after instantiation.
答案 0 :(得分:0)
该错误告诉您在编译器看到特化之前实例化该类。
例如,如果它看到这个,那么该类要么已经实例化,要么就在这里。
_luaCache["myluafile"].RegisterConstant( 13, "myvariable" );
如果稍后实施专业化,您将收到错误。
最简单的解决方案是将特殊化声明放在标题中,即
template<>
void RegisterConstant<int>( int value, const char * N );