我们使用 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_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 做到这一点?