0

我刚刚让自己陷入了与 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)
    ];
}
};  

有什么想法我可能做错了吗?

4

1 回答 1

1

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

是的,它确实。你只是没有做对。具体来说,您没有注意到使用 .:而不是.. 在声明函数时,它在 Lua 中具有明确的含义

function MyGame:__init()
    Game.__init(self)
end
于 2012-11-18T19:35:42.153 回答