我有一个模板类,它只有静态函数和字段的头。“未定义的参考”静态字段模板专业化
template<typename T> class Luaproxy {
static std::map<std::string, fieldproxy> fields;
static const char * const CLASS_NAME;
static void addfields();
static int __newindex(lua_State * l){
//implemented stuff, references to fields...
}
//etc
}
正如你所看到的一些函数只是声明的,因为我打算用模板专门化来实现它们。
在.ccp文件我有:
struct test { int a; }
template<> map<string, fieldproxy> Luaproxy<test>::fields;
template<> const char * const Luaproxy<test>::CLASS_NAME=typeid(test).name();
template<> void Luaproxy<test>::addfields(){
//stuff, references to fields...
}
我从只专业的.cpp是在头实现的函数和那些得到了一个未定义引用错误Luaproxy<test>::fields
。请注意,Luaproxy<test>::CLASS_NAME
和Luaproxy<test>::addfields
似乎可以在链接中找到。
是什么让map
如此特别?
使“模板类Luaproxy <>;”输入你的cpp文件的顶部。我认为那必须解决它 – Arunmu