我刚刚遇到了Luabind的奇怪问题。我想从Lua继承C ++类,但Luabind文档中描述的方式不起作用。
function MyGame.__init()
Game.__init(self)
end
这段代码只是崩溃了应用程序,因为self
似乎未定义(如果打印出来,则返回nil
。)
我正在使用文档中描述的包装结构。
struct GameWrapper: Game, luabind::wrap_base{
GameWrapper()
: Game()
{}
virtual int Loop(void){
call<int>("Loop");
}
static int default_Loop(Game* ptr){
return ptr->Game::Loop();
}
static void Lua(lua_State *lua){
luabind::module(lua)
[
luabind::class_<Game, GameWrapper>("Game")
.def(luabind::constructor<>())
.def("Loop", &Game::Loop, &GameWrapper::default_Loop)
];
}
};
任何想法我可能做错了什么?
答案 0 :(得分:1)
但是Luabind doc中描述的方式不起作用。
是的。你只是做得不对。具体来说,您没有注意到使用:
而不是.
。哪个有a well-defined meaning in Lua when declaring a function:
function MyGame:__init()
Game.__init(self)
end