Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #9788
| Path | csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!nx02.iad01.newshosting.com!newshosting.com!news-out.readnews.com!transit3.readnews.com!postnews.google.com!news4.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail |
|---|---|
| From | Ian Collins <ian-news@hotmail.com> |
| Newsgroups | comp.lang.c++ |
| Subject | Re: issues with const and iterator |
| Date | Tue, 06 Sep 2011 21:56:23 +1200 |
| Lines | 65 |
| Message-ID | <9cm927F72aU3@mid.individual.net> (permalink) |
| References | <7ba85c39-9ae1-46d4-9a8f-7f0987a2c4a9@m3g2000pri.googlegroups.com> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=windows-1252; format=flowed |
| Content-Transfer-Encoding | 8bit |
| X-Trace | individual.net CvH7Fy02dru/IcnL085stgZPTXQdglvwegbKaPxQ9aauicyVID |
| Cancel-Lock | sha1:Q+bwXCu02aQWLyZD8e3rE4Z5mUU= |
| User-Agent | Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.2.9) Gecko/20101021 Lightning/1.0b2 Thunderbird/3.1.4 |
| In-Reply-To | <7ba85c39-9ae1-46d4-9a8f-7f0987a2c4a9@m3g2000pri.googlegroups.com> |
| Xref | x330-a1.tempe.blueboxinc.net comp.lang.c++:9788 |
Show key headers only | View raw
On 09/ 6/11 09:46 PM, hweekuan@yahoo.com wrote:
> i am using some code from a library in which i do not want to edit.
> building on the library i have some compile time errors about
> assigning iterators. below is the distilled code and error message.
> appreciate your help:
Answer at the end!
> 1 #include<vector>
> 2 // --------------------------------------
> 3 // struct B cannot be edited
> 4 // --------------------------------------
> 5 template<class D>
> 6 struct B {
> 7
> 8 B(): data(5) { }
> 9 const D& get() const { return data; }
Returns a const object.
> 10 D data;
> 11 };
> 12 // --------------------------------------
> 13 // edit struct C to make the code compile
> 14 // --------------------------------------
> 15 struct C {
> 16
> 17 typedef std::vector<int> D;
> 18 typedef D::iterator Ditr;
> 19
> 20 C () {
> 21 bd = new B<D>();
> 22 begin_itr = (bd->get()).begin(); // error happens here
(bd->get()).begin() returns a const_iterator.
> 23 }
> 24 Ditr begin_itr;
> 25 B<D> * bd;
> 26 };
> 27 // --------------------------------------
> 28 int main ( ) { }
Line numbers in Usenet posts are a bad idea if you want people to try
your code!
> g++ -Wall vector_t.C
> vector_t.C: In constructor ‘C::C()’:
> vector_t.C:22: error: no match for ‘operator=’ in ‘((C*)this)-
>> C::begin_itr = ((const std::vector<int, std::allocator<int> >*)
> ((C*)this)->C::bd-> B<D>::get [with D = std::vector<int,
> std::allocator<int> >]())->std::vector<_Tp, _Alloc>::begin [with _Tp =
> int, _Alloc = std::allocator<int>]()’
> /usr/include/c++/4.2.1/bits/stl_iterator.h:637: note: candidates are:
> __gnu_cxx::__normal_iterator<int*, std::vector<int,
> std::allocator<int> > >& __gnu_cxx::__normal_iterator<int*,
> std::vector<int, std::allocator<int> > >::operator=(const
> __gnu_cxx::__normal_iterator<int*, std::vector<int,
> std::allocator<int> > >&)
In it's own ridiculously long winded way, g++ is telling you you can't
assign a const iterator to an iterator!
--
Ian Collins
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
issues with const and iterator "hweekuan@yahoo.com" <hweekuan2011@gmail.com> - 2011-09-06 02:46 -0700
Re: issues with const and iterator Ian Collins <ian-news@hotmail.com> - 2011-09-06 21:56 +1200
Re: issues with const and iterator James Kanze <james.kanze@gmail.com> - 2011-09-06 15:24 -0700
Re: issues with const and iterator Ian Collins <ian-news@hotmail.com> - 2011-09-07 10:56 +1200
Re: issues with const and iterator red floyd <no.spam.here@its.invalid> - 2011-09-06 16:11 -0700
csiph-web