Lua SWIG错误%immutable行为
我将swig与Lua一起使用,并将以下结构包装起来,用于一般向量计算:Lua SWIG错误%immutable行为,lua,swig,Lua,Swig,我将swig与Lua一起使用,并将以下结构包装起来,用于一般向量计算: typedef struct { %mutable; float x,y,z %extend { Set(float x,float y, floatz ) { Vector3Set(x,y,z); } }; } Vector3; 在下面
typedef struct
{
%mutable;
float x,y,z
%extend
{
Set(float x,float y, floatz )
{
Vector3Set(x,y,z);
}
};
} Vector3;
在下面的结构中,我将在另一个结构中重新使用Vector3,并将其设置为%immutable:
world.gravity=Vector3:Set(1,2,3)
在Lua中,以下操作按预期运行,并得到重力不可变的错误:
world.gravity=Vector3:Set(1,2,3)
但如果我这样做:
world.gravity.x=-10
不产生任何误差,且world.gravity.x等于-10
如何解决这个问题,我显然不想将Vector3中的XYZ设置为%不可变从Vector3中删除%可变,以便Swig可以将可变标志传播到内部数据成员。如果从Vector3中删除%可变,会怎么样?我认为这是预期的行为,因为重力成为对可变对象的引用。也就是说,引用是不可变的,但它所引用的东西不是。我稍后会设法寻找解决办法。@scholli:你说对了!这就成功了。。。一堆。。。真不敢相信事情会这么简单;很高兴听到这个消息,我已经回答了,所以你可以关闭。等等。。。不,那没用。。。它只是将问题推迟到接口文件中的下一个结构,在我的例子中是Vector4。。。我仍然被同样的问题困扰着。。。犯错误