Я пытаюсь предоставить доступ к методу класса, который выводит массив указателей от c ++ до python
Я знаю, как предоставить метод, который выводит указатель на родительский класс, используя return_value_policy
и manage_new_object
, например,
def("Tfactory", factory, return_value_policy<manage_new_object>() );
Это работает, т.е. если указатель указывает на дочерний класс, я получаю ребенка в python
Я также знать, как предоставить метод, который выводит вектор объектов, используя vector_indexing_suite
, например
class_<std::vector<X> >("XVec").def(vector_indexing_suite<std::vector<X> >())
(я объявил X как Class_<X>(X).def(“foo”, &X.foo)
). Однако я хочу вернуть массив указателей, указывающих на дочерние классы. Если я просто изменю строку выше на что-то вроде
class_<std::vector<X*> >("XVec").def(vector_indexing_suite<std::vector<X*> >())
Очевидно, я получаю сообщение об ошибке, поскольку для X * нет конвертера. Поэтому мой вопрос заключается в том, как мой класс_ (PtrX) должен быть создан для обеспечения правильной политики возврата (return_value_policy<manage_new_object>()
), чтобы в Python можно было вызывать виртуальные методы X и запускать правильные дочерние методы). Любая помощь с благодарностью
Спасибо