我們使用tolua ++爲C++類生成Lua綁定。如何確定C++ usertype是否已使用tolua註冊
假設我有一個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_cclass註冊的C++類的有效完全限定字符串,tolua_pushusertype會在Lua中導致段錯誤。所以,如果參數3在「Bar」中,我們得到一個段錯誤。
我想什麼做的是以下幾點:
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?
確實有效(第二版)。謝謝。 – czuger 2010-04-19 19:12:55