C++ 通过C&x2B+;对象,以便Lua可以使用它

C++ 通过C&x2B+;对象,以便Lua可以使用它,c++,lua,luabind,C++,Lua,Luabind,我知道使用Luabind可以公开类,然后可以在lua中创建这些类的实例 module[L_state] [ class_<Player>("Player") .def(constructor<>()) .def("Update",&Player::Update) ]; test.lua player = Player() player:Update() 您可以通过luabind将值推送到Lua堆栈上: Playe

我知道使用Luabind可以公开类,然后可以在lua中创建这些类的实例

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

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

您可以通过luabind将值推送到Lua堆栈上:

Player p;
luabind::globals(L)["player"] = p;
一个可运行的示例:


请注意对象生存期和所有权问题。该手册有助于规划共享对象生命周期管理的策略LuaBind生命周期策略的更新。

如果你想让事情按这样的方式进行,你可以从C++调用LUA函数来创建和访问实例。对于我的进程,对象将在整个应用程序中运行,因此不是问题。
Player p;
luabind::globals(L)["player"] = p;