此 Lua 代码创建一个表并动态添加一个新成员。运行这个我可以"hello"
按预期进入屏幕:
foo = {}
foo.x = "hello"
print(foo.x)
但现在我正在使用 SWIG 将一些 C++ 类绑定到 Lua。为此,在test.i
(SWIG 模块文件)中,我创建了一个像这样的简单类:
%module test
%inline
%{
class Foo
{
public:
Foo() { X = 0; }
void SetX(int x) { X = x; }
int GetX() { return X; }
private:
int X;
};
%}
然后我写了一个这样的测试 Lua 代码:
obj = test.Foo()
obj:SetX(5)
print("Number: " .. obj:GetX())
运行并按"Number 5"
预期运行。问题是,当我向我的 SWIG 绑定对象动态添加一个新成员时,我尝试访问它,如下所示:
obj.Y = 7
print("Number: " .. obj.Y)
我收到此错误消息:
"attempt to concatenate field 'Y' (a nil value)"
是否可以在使用 SWIG 绑定的对象上动态添加新成员?是否有一些选择而不必移动到另一个 Lua 绑定库?