Luabind继承:自我未定义

时间:2012-11-18 19:06:28

标签: inheritance lua luabind

我刚刚遇到了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)
    ];
}
};  

任何想法我可能做错了什么?

1 个答案:

答案 0 :(得分:1)

  

但是Luabind doc中描述的方式不起作用。

是的。你只是做得不对。具体来说,您没有注意到使用:而不是.。哪个有a well-defined meaning in Lua when declaring a function

function MyGame:__init()
    Game.__init(self)
end