我正在使用swa和Lua,并且包含以下结构,用于通用矢量计算:
typedef struct
{
%mutable;
float x,y,z
%extend
{
Set(float x,float y, floatz )
{
Vector3Set(x,y,z);
}
};
} Vector3;
在下面的结构中,我在另一个结构中重新使用Vector3
并将其设置为%immutable
:
typedef struct
{
%immutable
Vector3 gravity;
} World;
在Lua中,以下内容按预期运行,并获得gravity
不可变的错误:
world.gravity=Vector3:Set(1,2,3)
但如果我这样做:
world.gravity.x=-10
未生成错误且world.gravity.x
等于-10。
如何解决此问题,我显然不希望Vector3
中的XYZ设置为%immutable
答案 0 :(得分:0)
从%mutable
中删除Vector3
,以便Swig可以将可变性标志传播到内部数据成员。