[英]How to extend c++ class in python with operator [], using swig
[英]How to extend a C++ class by adding a new attribute with swig (Python)?
我有一个C ++类,需要添加一个新的private属性来进行扩展。 我还需要不要将其绑定到特定的类,所以我正在使用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 ++中,因为我需要取消引用指针:)。
不知道为什么要使用%define。 只需将其附加到您的swig接口文件中就可以工作(我尚未对成员变量进行测试,但已将其用于成员函数定义):
%extend MyClass {
int new_attribute;
}
请注意,最后一个分号是多余的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.