假设我有一个包含子对象列表的C ++对象。这些对象的生存期取决于原始对象的生存期。我想要原始对象上的一种方法或属性,该方法或属性通过实例化boost::python::list
并将它们一次附加到列表中来返回boost::python::list
的子对象。我如何在将列表的元素取决于原始对象的生存期的策略下,将这些对象追加到列表中?
以下是一些伪代码来说明我要执行的操作:
#include <boost/python.hpp>
namespace bp = boost::python;
struct SubObject {
};
struct MainObject {
std::vector<SubObject *> subobjects;
};
bp::list subobjects_from_mainobject(MainObject const & obj)
{
bp::list retval;
for (auto subob : obj.subobjects) {
retval.append(subob); // Lifetime of subob depends on lifetime of obj
}
}
BOOST_PYTHON_MODULE(test)
{
using namespace boost::python;
class_<SubObject, bases<>, SubObject *>("SubObject", no_init)
;
class_<MainObject>("MainObject", no_init)
.def("subobjects", subobjects_from_mainobject)
;
}