在Windows上使用SWIG 3.0.0,导出到python,我有以下接口文件:
%module example
%immutable;
class MyClass {
public:
%mutable;
char *str1;
%immutable;
char *str2;
};
我的意图是默认情况下使整个文件中的所有类成员都是不可变的(只读),但允许一些可写 - 在本例中为str1。
但SWIG似乎忽略了类中的%mutable指令;它永远不会为str1或str2生成任何MyClass_str1_set
方法。我已经通过了文档,它看起来应该工作。我也尝试将%mutable MyClass::str1;
置于顶层,但这也无济于事。我错过了什么?
答案 0 :(得分:1)
从文档中不是很清楚,现在无法对此进行测试,但这可能有效:
// make everything immutable except str2 data member:
%feature("immutable","1");
%feature("immutable","0") MyClass::str2;
class MyClass {
public:
char *str1;
char *str2;
char *str3;
};
如果这不起作用,您也可以尝试在类中移动语句:
class MyClass {
public:
// make everything immutable except str2 data member:
%immutable;
char *str0;
char *str1;
%mutable;
char *str2;
%immutable;
char *str3;
char *str4;
};