issues with const and iterator
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:
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; }
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
23 }
24 Ditr begin_itr;
25 B<D> * bd;
26 };
27 // --------------------------------------
28 int main ( ) { }
g++ -Wall vector_t.C
vector_t.C: In constructor =91C::C()':
vector_t.C:22: error: no match for =91operator=' in =91((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> > >&)