2012-11-18 64 views
0

我刚把自己陷入与Luabind有关的奇怪问题。我想从Lua继承C++类,但Luabind文档中描述的方式不起作用。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

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

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

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

哎哟,这是多么愚蠢的错误。 –