Simon W <simwarg <at> gmail.com> writes: > > > >From my research it seems not very trivial to wrap std::vector that holds pointer types. For example: std::vector<GameObject*>I've looked at boost python vector_index_suite but it just gives me the runtime error:> TypeError: No to_python (by-value) converter found for C++ type:> GameObject*I have already exposed GameObject: class_<GameObject>(" > GameObject") ... > So > it have come to my understanding it's not possible with an out of the > box solution. I have to do some kind of wrapper? Could someone just help > me out where I should start?Thank you! > >
I've come across this before as well and use the following to provide support for vectors of pointers. I only need to iterate over them so have only modified the __iter__ method. template <class Container> class vector_ptr_indexing_suite : public vector_indexing_suite<Container, true, vector_ptr_indexing_suite<Container>> { public: typedef iterator<Container, return_value_policy<reference_existing_object>> def_iterator; template <class Class> static void extension_def(Class & cl) { vector_indexing_suite<Container, true, vector_ptr_indexing_suite<Container>>::extension_def(cl); cl.def("__iter__", def_iterator()); } }; class_<std::vector<Object*>>("ObjectContainer") .def(vector_ptr_indexing_suite<std::vector<Object*>>()) ; You may want to override functions such as get_item, whose implementation might look like: static object get_item(Container& container, index_type i) { return object(ptr(container[i])); } Anyway have a good look in vector_indexing_suite.hpp to see what is there and what you might need to hack at. _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig