Как заставить работать back_inserter
От: Аноним  
Дата: 14.11.09 23:52
Оценка:
Оператор
   std::copy(is, eof, std::back_inserter(f) );

вызывает кучу ошибок
usr/include/c++/4.3/bits/stl_iterator.h: In member function ‘std::back_insert_iterator<_Container>& std::back_insert_iterator<_Container>::operator=(typename _Container::const_reference) [with _Container = const std::vector<Segm2D, std::allocator<Segm2D> >]’:
/usr/include/c++/4.3/bits/stl_algobase.h:312:   instantiated from ‘static _OI std::__copy_move<<anonymous>, <anonymous>, <template-parameter-1-3> >::__copy_m(_II, _II, _OI) [with _II = std::istream_iterator<Segm2D, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<const std::vector<Segm2D, std::allocator<Segm2D> > >, bool <anonymous> = false, bool <anonymous> = false, <template-parameter-1-3> = std::input_iterator_tag]’
/usr/include/c++/4.3/bits/stl_algobase.h:396:   instantiated from ‘_OI std::__copy_move_a(_II, _II, _OI) [with bool _IsMove = false, _II = std::istream_iterator<Segm2D, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<const std::vector<Segm2D, std::allocator<Segm2D> > >]’
/usr/include/c++/4.3/bits/stl_algobase.h:435:   instantiated from ‘_OI std::__copy_move_a2(_II, _II, _OI) [with bool _IsMove = false, _II = std::istream_iterator<Segm2D, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<const std::vector<Segm2D, std::allocator<Segm2D> > >]’
/usr/include/c++/4.3/bits/stl_algobase.h:466:   instantiated from ‘_OI std::copy(_II, _II, _OI) [with _II = std::istream_iterator<Segm2D, char, std::char_traits<char>, int>, _OI = std::back_insert_iterator<const std::vector<Segm2D, std::allocator<Segm2D> > >]’
main.cc:198:   instantiated from here
/usr/include/c++/4.3/bits/stl_iterator.h:414: ошибка: passing ‘const std::vector<Segm2D, std::allocator<Segm2D> >’ as ‘this’ argument of ‘void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = Segm2D, _Alloc = std::allocator<Segm2D>]’ discards qualifiers
make: *** [main.o] Ошибка 1


Причем:
struct Segm2D {
   Segm2D();
   Segm2D(const Vector2D & _A, const Vector2D & _B);
   Segm2D & operator=(const Segm2D &);
   Vector2D A,B;
};
Re: Как заставить работать back_inserter
От: _DAle_ Беларусь  
Дата: 15.11.09 00:02
Оценка:
Здравствуйте, Аноним, Вы писали:

А>
А>/usr/include/c++/4.3/bits/stl_iterator.h:414: ошибка: passing ‘const std::vector<Segm2D, std::allocator<Segm2D> >’ as ‘this’ argument of ‘void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = Segm2D, _Alloc = std::allocator<Segm2D>]’ discards qualifiers
А>make: *** [main.o] Ошибка 1
А>


f — ссылка на константу? (телепатический режим)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.