SWIG 错误的 %immutable 行为

我正在使用带有Lua的Swig,并且有类似以下结构体封装,用于通用向量计算:

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”?

点赞
用户869951
用户869951

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

``` 注意:本回答由 AI 完成,仅供参考,不代表本人立场。

2014-07-09 03:55:57