неожиданный результат, повторяющийся над boost :: python vector_indexing_suite

Я успешно завершил класс с именем Composite. Этот класс имеет следующий метод:

std::vector<Composite*> Composite::getChildren(); 

Я попытался обернуть возвращаемый std :: vector, используя vector_indexing_suite, следующим образом: [snippet]

 typedef std::vector<Composite*> CompositeArray; BOOST_PYTHON_MODULE(composite) { class_<CompositeArray>("CompositeArray") .def(vector_indexing_suite<CompositeArray, true>()); class_<Composite>("Composite", init<>()) ... more wrapper .def("getChildren", &Composite::getChildren) ... more wrapper ; } 

Теперь все работает корректно, и когда я вызываю метод getChildren () из python, он корректно возвращает завершенный CompositeArray. Я могу сделать, например:

 from composite import Composite myComp = Composite() myComp.addChild('childA') myComp.addChild('childB') len(myComp.getChildren()) #returns 2 myComp.getChildren()[0] # returns the first child of type Composite 

Но когда я пытаюсь выполнить итерацию по CompositeArray, например, следующим образом:

 for child in myComp.getChildren(): # do something with child... 

Я получил сообщение об ошибке:

 TypeError: No to_python (by-value) converter found for C++ type: class Composite * __ptr64 

что не имеет для меня никакого смысла, учитывая, что доступ по индексу работал отлично! Я застрял в этом … у вас есть представление о том, что я делаю неправильно?

Спасибо.

    One Solution collect form web for “неожиданный результат, повторяющийся над boost :: python vector_indexing_suite”

    Пытаться

     class_<Composite, Composite*>("Composite", init<>()) 

    Вместо

     class_<Composite>("Composite", init<>()) 
    Python - лучший язык программирования в мире.