我有一个C ++类,比如B,它是从另一个类A。
公开派生的B类被激活并可以在Python中访问。 这很有效,并且在B语言中定义的所有公共函数都可以在Python中轻松获得,而几乎不需要任何工作。
但是,在Python中创建B对象时,A类中定义的公共函数似乎不会自动公开。
问题是,如何为一个swigged Python对象获取C ++类层次结构的函数?
答案 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对象。