【发布时间】:2019-01-11 10:35:15
【问题描述】:
我想知道是否可以在 Lua 中手动破坏 C++ 类。
我尝试将nil 分配给一个类,但它似乎不起作用。
Main.cpp
#include "lua.hpp"
extern "C" int luaopen_my(lua_State *L);
int main()
{
lua_State *L = luaL_newstate();
luaL_openlibs(L);
luaopen_my(L);
lua_settop(L, 0);
luaL_dostring(L, "local class = my.Class()\n"
"class = nil\n");
// lua_close(L);
}
MyBindings.h
#pragma once
#include <iostream>
class Class
{
public:
Class()
{
std::cout << "Class Constructed" << std::endl;
};
~Class()
{
std::cout << "Class Destructed" << std::endl;
};
};
MyBindings.i
%module my
%{
#include "MyBindings.h"
%}
%include "MyBindings.h"
我得到的结果:
Class Constructed
我期望的结果:
Class Constructed
Class Destructed
如果我调用lua_close(L); 或手动调用垃圾调用器lua_gc(L, LUA_GCCOLLECT, 0);,它会起作用
但我想了解是否有任何其他解决方案可以手动破坏 Lua 中的 C++ 类。
【问题讨论】: