【发布时间】:2010-11-06 09:21:02
【问题描述】:
我将使用 Boost.Python 向 python 公开一个 C++ 树类。节点类保存子节点列表并提供方法
void add_child(Node *node)
Node 类拥有所提供的 Node 指针的所有权,并在调用析构函数时删除它的子节点。
我将 add_child 方法公开为:
.def("addChild", &Node::add_child)
我的实际问题是:我如何告诉 Boost.Python Node 类拥有子节点的所有权?
因为如果我在 python 中执行以下代码:
parentNode = Node()
node = Node()
parentNode.addChild(node)
节点变量引用的对象在脚本结束时被删除两次。一次是节点变量被删除,第二次是父节点被删除。
【问题讨论】:
标签: c++ python boost boost-python