使用tolua++绑定结构体和构造/析构函数

假设我想将以下代码绑定到 Lua,看起来是这样的:

typedef struct bar {
  void * some_data;
} bar;
bar * bar_create(void);
void bar_do_something(bar * baz);
void bar_free(bar * baz);

我希望能够从 Lua 脚本中创建这些对象,而不需要直接管理它们的生命周期。最好的情况是,我希望我的脚本写成这样:

require "foo"
local baz = foo:bar()
baz:do_something()
baz = nil

问题:想要使其按预期工作,我需要以某种方式告诉 tolua++,bar_create 和 bar_free 是 bar 的构造函数/析构函数。我该怎么做?对于类,tolua++ 声称可以自动使用它们的构造函数/析构函数,但对于结构体呢?

我能想到的最好的方法是编写 foo.pkg 的以下定义:

module foo {
  struct bar {
    static tolua_outside bar_create @ create();
    tolua_outside bar_do_something @ do_something();
    tolua_outside bar_free @ free();
  };
}

这意味着我必须显式调用 create() 和 free()。

原文链接 https://stackoverflow.com/questions/4999773

点赞