2015-04-15 46 views
4

我明白Luabind可以公開類,然後可以在lua中創建這些類的實例。傳遞C++對象,讓Lua可以使用它

module[L_state] 
    [ 
     class_<Player>("Player") 
     .def(constructor<>()) 
     .def("Update",&Player::Update) 
    ]; 

test.lua 
player = Player() 
player:Update() 

但是如果我想創造的C++,因爲我想調用它在C++成員播放器實例,但我也希望玩家的同一實例暴露到Lua所以它仍然可以調用它的功能,如:

player:Update() 
+0

如果您想以這種方式完成任務,您可以從C++調用lua函數來創建和訪問實例。 –

回答

2

可以推值壓入的Lua經由luabind堆棧:

Player p; 
luabind::globals(L)["player"] = p; 

可運行例如:travis-cisource

P.S.謹防物體壽命和所有權問題。 LuaBridge手冊可以幫助您規劃共享對象生存期管理策略。 + LuaBind生存期策略更新LuaBind manual

+0

正是我在尋找的感謝!對於我的過程,該對象將適用於整個應用程序,所以不是問題。 – user441521