[英]boost.python expose function that returns vector<MyClass>
我正在用C ++编写Python扩展模块,我正在使用boost.python。 我想公开一个返回vector<MyClass>
的函数。 我不确定如何做到这一点以及它将如何与Python WRT内存管理交互。
我的第一个想法是在shared_ptr
包装MyClass
,因此该函数将返回vector<shared_ptr<MyClass>>
。 这会有帮助吗? 当shared_ptr<MyClass>
实例到达Python域时会发生什么? 他们会被释放吗?
所以我的问题是:如何在不泄漏内存的情况下公开一个将MyClass
实例vector
返回给Python的函数?
谢谢。
看看Boost.Python的索引套件 。
我遇到了更多相同的问题:我必须使用C ++编写的模块返回自定义对象的向量。
虽然(如上所述) Boost.Python索引套件运行良好并使我更像Boost.Python,我最终重构了这些东西,所以这就是返回我的对象的boost :: python :: list。 这使得Python中的调用代码更加清晰。
关于释放内存,除索引套件外,还要看一下manage_new_object的返回值策略:
...包装C ++函数,它返回一个指向使用new-expression分配的对象的指针,并期望调用者负责删除该对象...
我使用它,它运作得相当好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.