gpt4 book ai didi

c++ - luabind 什么时候释放创建的对象?

转载 作者:行者123 更新时间:2023-11-28 03:53:10 25 4
gpt4 key购买 nike

我在使用 luabind 时遇到了问题。我定义了一个 std::map 来分配在 lua 中创建的对象。我以这种方式将这张 map 发布为 lua 中的全局对象:

luabind::globals(L)["g_SceneManager2D"] = this;

之后,这个对象被用于lua的一个函数中,其中创建了许多对象并将其插入到这个映射中。当 lua 函数结束并且 luabind 将控制权返回给 C++ 端程序时,问题就来了,因为 map 的所有内容都会自动丢失。

我正在寻找错误。我让 lua context 保持事件状态,所以这个对象必须存在。

你能帮我吗??

非常感谢:)

最佳答案

我建议使用 shared_ptr<>(this)而不是原始的 this . boost::shared_from_this可能有帮助。确保你的类也使用 Luabind 注册,并且 class_指定为 shared_ptr 持有.

另一个有趣的想法可能是让您的 Lua 函数只生成“ map ”作为 Lua 表,返回它,然后您可以在 C++ 中迭代它以构建您的 std::map .

关于c++ - luabind 什么时候释放创建的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com