[C++-sig] Iterators for heterogeneous container
troy d. straszheim
troy at resophonic.com
Sat Nov 7 20:45:22 CET 2009
Thomas Daniel wrote:
>
> BOOST_PYTHON_MODULE(vegetables)
> {
> class_<Garden>("Garden")
> .def("get_potatoes", &Garden::get_potatoes)
> .def("get_tomatoes", &Garden::get_tomatoes)
> ;
> class_<TomatoIter>("TomatoIter")
> .def("__iter__", &TomatoIter::get_next)
> ;
> }
>
> That at least compiles - unlike all my previous attempts that generate
> three pages of template errors - but python complain:
>
> TypeError: iter() returned non-iterator of type 'Tomato'
>
> so now I am trying to figure out how to tell boost that get_tomatoes
> returns an iterator ...
>
Please don't top-post, guys
As you know, python iterators have a function next() that returns the
next object in the iteree, or throw StopIteration when they're at the
end. As you also know, python expects member functions __iter__() to
return an iterator. Is the thing returned by TomatoIter::get_next an
iterator, ie does it implement the iterator interface?
-t
More information about the Cplusplus-sig
mailing list