类中的模板成员

时间:2015-02-03 10:02:49

标签: c++ xcode templates

我试图在非模板类中包含模板成员。这是一个例子:

·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.

1 个答案:

答案 0 :(得分:0)

该错误告诉您在编译器看到特化之前实例化该类。

例如,如果它看到这个,那么该类要么已经实例化,要么就在这里。

_luaCache["myluafile"].RegisterConstant( 13, "myvariable" );

如果稍后实施专业化,您将收到错误。

最简单的解决方案是将特殊化声明放在标题中,即

template<>  
void RegisterConstant<int>( int value, const char * N );