SWIG错误%不可变行为

时间:2014-07-08 02:09:06

标签: lua swig

我正在使用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

1 个答案:

答案 0 :(得分:0)

%mutable中删除Vector3,以便Swig可以将可变性标志传播到内部数据成员。