【问题标题】:How does Boost.Python hold C++ class?Boost.Python 如何拥有 C++ 类?
【发布时间】:2015-01-28 06:39:38
【问题描述】:

我知道如何使用 Boost.Python 来包装暴露给 Python 的 C++ 类。 使用 Boost.Python 如此方便地进行包装,真的很强大。

然而,关于 Boost.Python 如何持有 C++ 类的细节很少被解释。

Boost.Python 的代码很难阅读或调试,因为它是以模板元编程方式编写的,所有东西都只是在编译时执行。我浏览了作者的文档和“使用 Boost Python 构建混合系统”一文,但没有找到答案。

那么,Boost.Python 是如何拥有 C++ 类的呢?

它是否将封装的 C++ 类实例作为 PyObject 的私有成员保存?包装类的所有继承、多态等特性是否都通过委托给持有的实例来模仿?

【问题讨论】:

    标签: python c++ boost boost-python


    【解决方案1】:

    那么,Boost.Python 是如何持有 C++ 类的呢?

    为了迂腐,在 C++ 中,在运行时没有类,只有类的对象或实例。

    Boost 类包装器通过值或智能指针保存您的 C++ 对象(目前仅支持已弃用的 std::auto_ptr)。

    不幸的是 boost.python 文档相当缺乏,这里有一些对你有用的链接:

    【讨论】:

    • “目前仅支持已弃用的 std::auto_ptr” — 2021 年仍然如此吗?
    猜你喜欢
    • 2014-07-10
    • 1970-01-01
    • 2014-03-15
    • 2012-02-21
    • 2014-02-28
    • 2011-05-17
    • 2017-04-29
    • 2021-09-08
    相关资源
    最近更新 更多