我是第一次使用 Lua 和 luabind,我一直想知道以下问题。如果我在 C++ 中声明一个单例类,并将其绑定到 Lua,我在 Lua 中获取它的实例并调用一些方法,那么哪种语言实际上拥有该实例?
我想知道的原因是因为目前我的程序偶尔会在我的单例类的析构函数中出现段错误。Lua 是否在实例已被破坏后尝试对其进行垃圾收集?如果是这样,我该如何防止它这样做?这是声明:
public:
static App* GetInstance();
~App();
void Execute();
private:
App();
在 Lua 我打电话
app = App.getInstance()
app:execute()
一切都完成后,它崩溃了。这里到底发生了什么?
luabind 看起来像这样(很多属性都被省略了)
module(L, "nge")
[
class_<App>("App")
.scope
[
def("getInstance", &App::GetInstance)
]
.def("execute", &App::Execute)
]