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 doc で説明されている方法は機能しません。

はい、そうです。あなたはそれを正しくしなかっただけです。:具体的には、 の代わりに を使用していることに気づきませんでした.関数を宣言するときに、Lua で明確に定義された意味があります。

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