Boost logo

Boost Users :

From: Jeremy Siek (jsiek_at_[hidden])
Date: 2005-01-17 10:48:28


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_at_ic unicamp br, felipe.m.almeida_at_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_at_[hidden]
>>> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>>>
>> _______________________________________________
>> Jeremy Siek <jsiek_at_[hidden]>
>> http://www.osl.iu.edu/~jsiek
>> Ph.D. Candidate, Indiana University Bloomington
>> C++ Booster (http://www.boost.org)
>> _______________________________________________
>> _______________________________________________
>> Boost-users mailing list
>> Boost-users_at_[hidden]
>> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
> --
> Felipe Magno de Almeida
> UIN: 2113442
> email: felipe.almeida_at_ic unicamp br, felipe.m.almeida_at_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_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
_______________________________________________
Jeremy Siek <jsiek_at_[hidden]>
http://www.osl.iu.edu/~jsiek
Ph.D. Student, Indiana University Bloomington
C++ Booster (http://www.boost.org)
_______________________________________________


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net