我有一个C++类,我需要通过添加一个新的私有属性来扩展。我也需要这个不绑定到一个特定的类,所以我使用定义。我试图做同样的方式我添加新的方法,但它似乎没有任何效果:如何通过使用swig(Python)添加新属性来扩展C++类?
%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++,因为我需要取消引用指针:)。
我不认为这可以工作 - 它需要额外的存储空间分配给SWIG无法触及的部分代码 – Flexo
为什么你需要它在C++中,除非它是一些C++数据结构? SWIG会将其插入到原始C++类之外的包装文件中。 – subhacom