【问题标题】:Luabind inheritance: self not definedLuabind 继承:未定义自我
【发布时间】:2012-11-19 03:35:42
【问题描述】:

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

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

【问题讨论】:

    标签: inheritance lua luabind


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      相关资源
      最近更新 更多