tolua++ を使用して、C++ クラスの Lua バインディングを生成します。
C++ クラスがあるとします。
class Foo
{
//Some methods in Foo, irrelevant to question.
};
および次の内容の tolua .pkg ファイル
class Foo
{
};
次の関数を検討してください。
void call_some_lua_function(lua_State* luaState)
{
Foo* myFoo = new Foo();
tolua_pushusertype(luaState, (void*)myFoo, "Foo");
//More code to actually call Lua, irrelevant to question.
}
さて、実際の質問:
tolua_pushusertype は、3 番目のパラメーターが tolua_cclass の呼び出しで登録された C++ クラスの有効な完全修飾文字列に対応しない場合、Lua で segfault を引き起こします。したがって、パラメータ 3 が「Bar」の場合、segfault が発生します。
私がやりたいことは次のとおりです。
void call_some_lua_function(lua_State* luaState)
{
//determine if tolua is aware of my type, how to do this?
//Something like:
//if(!tolua_iscpptype_registered("Foo"))
//{
// abort gracefully
//}
Foo* myFoo = new Foo();
tolua_pushusertype(luaState, (void*)myFoo, "Foo");
//More code to actually call Lua, irrelevant to question.
}
toluaを使ってこれを行う方法はありますか?