【发布时间】:2025-12-31 11:20:13
【问题描述】:
我在我的应用程序中嵌入了 python,我想向 python 函数发送一个原始指针,指向我在 C++ 代码中拥有的对象。
我发现如何做到这一点的唯一方法是用 auto_ptr 或 shared_ptr 包装指针,但我不想这样做,因为我不希望 python 代码有任何机会持有对我的代码中的对象。
boost::python 可以做到这一点吗?
【问题讨论】:
-
看起来*.com/a/5056462/138772 有你的解决方案。 “通过 boost::python::ptr 将对象指针传递给 python。这将阻止 python 解释器进行复制”。
-
@JAB 不错!把它写成答案,我会接受的。
-
实际上,我似乎没有仔细研究它/没有正确阅读我复制和粘贴的内容。看起来使用
boost::python::ptr实际上会使悬空引用的可能性更多,根据boost.org/doc/libs/1_49_0/libs/python/doc/v2/ptr.html,“通常,在将指针传递给Python回调时,会复制指针以确保Python 对象从不持有悬空引用。”
标签: c++ python pointers boost-python