如何使用派生的Python swigged对象访问C ++基类函数?

时间:2014-08-13 21:13:07

标签: python c++ swig

我有一个C ++类,比如B,它是从另一个类A。

公开派生的

B类被激活并可以在Python中访问。 这很有效,并且在B语言中定义的所有公共函数都可以在Python中轻松获得,而几乎不需要任何工作。

但是,在Python中创建B对象时,A类中定义的公共函数似乎不会自动公开。

问题是,如何为一个swigged Python对象获取C ++类层次结构的函数?

2 个答案:

答案 0 :(得分:2)

你应该毫不费力地得到它。以下是http://www.swig.org/Doc1.3/Python.html#Python_nn21的一些文档。

  

31.3.8 C ++继承

     

SWIG完全了解与C ++继承相关的问题。因此,如果您有类似这样的课程

class Foo {
...
};

class Bar : public Foo {
...
};
  

这些类被包装到Python类的层次结构中,这些类反映了相同的继承结构。所有常用的Python实用程序函数都能正常工作:

答案 1 :(得分:2)

似乎答案是在swig接口文件中包含文件的实际排序。

通过在派生类之前放置基类标题,一切似乎都按预期开始工作。

对于任何人" swigging",看到警告;

warning 401: 'AnObjectXXX' must be defined before it is used as a base class.

将为您提供一个没有预期基类功能的python对象。