我有一个C ++类,我需要通过添加一个新的私有属性来扩展它。我还需要将其与特定类绑定,因此我使用 define 。我尝试以与添加新方法相同的方式进行操作,但似乎没有任何效果:
%define add_new_attribute(cls)
%extend MyClass {
int new_attribute;
};
%enddef
我并不关心新属性是私有还是公共属性,即使我更喜欢私有属性。文档也没有说明这一点。还有其他办法吗?
编辑:
然而,从方法实例化新的实例属性似乎没有问题。例如,这是可能的(它创建了一种迭代器,使其在实例上保持状态):
%pythoncode %{
def mymethod(self):
self.i = self.__dict__.get('i',0)
self.i += 1
print self.i
%}
但是我真的需要这个代码在C ++中,因为我需要取消引用指针:)。
答案 0 :(得分:-1)
不确定为什么使用%define。只是将其附加到您的swig接口文件应该可以工作(我没有测试它的成员变量,但我已经将它用于成员函数定义):
%extend MyClass {
int new_attribute;
}
请注意,最后一个分号是多余的。