Предположим, у меня есть объект 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)
;
}