我想向C++公开C++容器。 我:Boost python容器,迭代器和项目生存期
class Container {
std::auto_ptr<Iterator> __iter__();
};
class Iterator {
Container & parent;
Item __next__();
};
class Item {
Container & parent;
};
Item
类内部引用存在于集装箱数据。 Iterator
其中返回Item
实例不必为Item
存在可用。
c = Container()
for i in c:
store = i
print store
在上面的代码中,我期望得到Container
,Iterator
很少Item
实例。 当它达到print
声明我预计Iterator
已被破坏,但Container
实例明显仍存在store
。
现在问题来了。我不知道该用什么CallPolicy
来达到这样的效果: 定义:
class_<Container>("Container", ...)
.def("__iter__", &Container::__iter__, return_interal_reference<>())
;
class_<Iterator>("Iterator", ...)
.def("next", &Iterator::__next__, what_call_policy_here?)
;
class_<Item>("Item", ...)
.def("__str__", ...)
;
我应该在的地方what_call_policy_here
使用?