c++ - Boost.Python 是否需要其他 boost 库的绑定(bind)代码?

标签 c++ boost boost-python boost-statechart python-bindings

我有一个继承自 boost::statechart 库的类。我需要在 Python 脚本中使用这个类,我想知道我是否需要为所有 boost::statechart 库编写包装代码(.def s)只是因为我的类继承自它?或者 boost.python 不需要任何包装代码来查看定义(它会自动处理其他 boost 库以在 python 中调用)?

最佳答案

Boost.Python 对 Boost 类没有任何特殊处理。如果您想要使用继承的函数(无论是否为 Boost 类),您需要像处理自己的代码一样将它们公开给 Python。

如果您不想使用脚本中的任何基类函数,除了绑定(bind)您自己的代码外,您无需执行任何操作。

如果您需要(部分)Python 提供的基类接口(interface),您有两种选择:

  • 您单独绑定(bind)基类并公开它as a base for your class .这是最“完整”的解决方案(尽可能完整 - 您可以选择限制公开功能的数量)。
  • 您不绑定(bind)基类。 Python 不必知道继承关系。您可以简单地绑定(bind)要公开的函数,因为所有公共(public)函数也是派生类的成员。如果您只需要 一些 基类功能可从 Python 使用,这会更简单。

关于c++ - Boost.Python 是否需要其他 boost 库的绑定(bind)代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21989561/

相关文章:

c++ - 构造函数不能访问自己类的私有(private)成员

c++ - Qt Creator 项目不会在 Windows 上构建(链接器错误)

python - 动态加载库的 CMake 输出名称?

python - 返回 numpy 数组别名内部数组时如何处理引用计数?

c++ - 使用 boost 线程时出现链接器错误

python - 模块导入时的 boost.python 代码

c++ - 如何将函数指针中的函数保存为类的成员函数?

c++ - 使用固定编码的字符串到字节序列的转换,最好是 UTF-8

c++ - 网络协议(protocol)设计异步单线程与同步多线程?

c++ - uri 正则表达式模式匹配