我理解Luabind我可以公开类,然后可以在lua中创建这些类的实例.
module[L_state]
[
class_<Player>("Player")
.def(constructor<>())
.def("Update",&Player::Update)
];
test.lua
player = Player()
player:Update()
但是,如果我想在C中创建该播放器实例,因为我想在C中调用它的成员,但我也希望将相同的播放器实例暴露给Lua,这样它仍然可以调用它的函数,如:
player:Update()
最佳答案 您可以通过luabind将值推送到Lua堆栈:
Player p;
luabind::globals(L)["player"] = p;
附:注意对象的生命周期和所有权问题. LuaBridge手册可以帮助您规划共享对象生存期管理策略.针对LuaBind生命周期策略的更新LuaBind manual.