Perhaps you should trying following the node_iter example. http://www.boost.org/libs/iterator/doc/iterator_adaptor.html On Jan 16, 2005, at 8:58 PM, Felipe Magno de Almeida wrote:
I´ve tried with iterator_adaptor either in this way: (the class template xml_basic_node continues the same) and the iterator becomes:
template <class value> class xml_iterator : public boost::iterator_adaptor <xml_iterator<value>, value> { public: explicit xml_iterator(value node) : xml_iterator::iterator_adaptor_(node) {} private: friend class boost::iterator_core_access;
value &dereference() const { return base_reference(); } };
and it gives me the same error... I just cant figure out how to make a mutable iterator with the boost library...
Jeremy Graham Siek wrote:
Hi Felipe, The counting_iterator is not meant to be used for creating mutable iterators. You should use iterator_adaptor instead. Cheers, Jeremy On Jan 16, 2005, at 1:50 AM, Felipe Magno de Almeida wrote:
I'm trying to create an iterator from a class that is almost an iterator, it worked fine for const iterator with counting_iterator, but when I needed to dereference it, it complained about this: error C2440: 'return' : cannot convert from 'const xmlmanager::xml_basic_node<T>' to 'boost:: iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Differenc e> ::reference' I think it is because it is still a const iterator... But I need a mutable iterator, and I have no clue in how to do it... I've tried the documentation, but it just explains what it is, but not ho to do it. The way I'm doing the iterator is:
template <typename T> class xml_basic_node : public xml_basic_container<T>, public boost::iterator<boost::iterator_archetypes:: readable_lvalue_iterator_t, xml_basic_node<T> > { public: // some specifics constructors
bool operator == (xml_basic_node<T> const &n) const { // compares equality }
xml_basic_node<T> &operator ++() { // advances... return *this; } }; and the iterator through counting_iterator: template <typename T> class acontainer { typedef boost::counting_iterator<xml_basic_node<T> > iterator; };
If someone could, please point me where I am getting wrong... I am days already trying to figure out how to do it...
Sorry for the size of the mail and thanks in advance.
-- Felipe Magno de Almeida UIN: 2113442 email: felipe.almeida@ic unicamp br, felipe.m.almeida@gmail com I am a C, modern C++, MFC, ODBC, Windows Services, MAPI developer from synergy, and Computer Science student from State University of Campinas(UNICAMP). To know more about: Unicamp: http://www.ic.unicamp.br Synergy: http://www.synergy.com.br current work: http://www.mintercept.com _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Jeremy Siek <jsiek@osl.iu.edu> http://www.osl.iu.edu/~jsiek Ph.D. Candidate, Indiana University Bloomington C++ Booster (http://www.boost.org) _______________________________________________ _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Felipe Magno de Almeida UIN: 2113442 email: felipe.almeida@ic unicamp br, felipe.m.almeida@gmail com I am a C, modern C++, MFC, ODBC, Windows Services, MAPI developer from synergy, and Computer Science student from State University of Campinas(UNICAMP). To know more about: Unicamp: http://www.ic.unicamp.br Synergy: http://www.synergy.com.br current work: http://www.mintercept.com _______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________ Jeremy Siek <jsiek@osl.iu.edu> http://www.osl.iu.edu/~jsiek Ph.D. Student, Indiana University Bloomington C++ Booster (http://www.boost.org) _______________________________________________