静的関数とフィールドのみを持つテンプレートクラスを持つヘッダーがあります。静的フィールドテンプレートの特殊化への "未定義参照"
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
}
あなたは機能の一部を見ることができるように私はテンプレートの特殊化とそれらを実装しようとするためにのみ、宣言されています。私は、両方のヘッダに実装される機能のみ.CPPに特化されているものからLuaproxy<test>::fields
に未定義の参照エラーを得る
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...
}
:私は.ccpファイルで
。リンクにはLuaproxy<test>::CLASS_NAME
とLuaproxy<test>::addfields
があるように見えることに注意してください。
これは何を特別なものにするのですか?map
はとても特別ですか?
「テンプレートクラスLuaproxy <>;」を作成します。あなたのcppファイルの一番上にあるエントリ。私はそれを解決しなければならないと思う – Arunmu