繁体   English   中英

如何通过使用swig(Python)添加新属性来扩展C ++类?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM