Luabind继承:未定义self。

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

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

点赞
用户734069
用户734069

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

实际上是可以工作的。你只是没有正确操作。具体地,你没有注意使用 : 而不是 .。这在 Lua 中声明一个函数时 有一个明确定义的含义:

function MyGame:__init()
    Game.__init(self)
end
2012-11-18 19:35:42