Re[2]: Помогите побороть ошибку
От: EXL Россия  
Дата: 17.09.10 12:59
Оценка:
Здравствуйте, Chorkov, Вы писали:

C>Здравствуйте, EXL, Вы писали:


EXL>>Пытаюсь собрать кое-какую игру на телефон, но совершенно не знаю языка.

EXL>>Помогите пожалуйста разобраться, насколько я понял ошибка синтаксическая.
EXL>>Лог компилятора:

EXL>>
C>..
EXL>>src/Queue.cpp: In member function `void Queue::update()':
EXL>>src/Queue.cpp:50: error: no match for 'operator!=' in 'it != std::list<_Tp, _Alloc>::rend() [with _Tp = Tile*, _Alloc = std::allocator<Tile*>]()'
EXL>>src/Queue.cpp:51: error: no match for 'operator==' in 'it == std::list<_Tp, _Alloc>::rbegin() [with _Tp = Tile*, _Alloc = std::allocator<Tile*>]()'
EXL>>src/Queue.cpp: In member function `virtual void Queue::redraw()':
EXL>>src/Queue.cpp:61: error: no match for 'operator!=' in 'it != std::list<_Tp, _Alloc>::rend() [with _Tp = Tile*, _Alloc = std::allocator<Tile*>]()'
C>..
EXL>>


C>Пишет, что не может сравнить const_reverse_iterator с reverse_iterator. Это очень странно.

C>(Все разумные реализации STL должны уметь.)
C>Попробуй так:

EXL>>Queue.cpp:

C>
C>..
C>void Queue::update()
C>{
C>    Sprite::update();
C>    for (list<Tile*>::reverse_iterator it = tiles.rbegin(); it != tiles.rend(); ++it)
C>        if (it == tiles.rbegin())
C>            (*it)->redraw();
C>        else
C>            (*it)->update();
C>    return;
C>}

C>void Queue::redraw()
C>{
C>    Sprite::redraw();
C>    for (list<Tile*>::reverse_iterator it = tiles.rbegin(); it != tiles.rend(); ++it)
C>        (*it)->redraw();
C>}
C>..
C>


Спасибо огромное, всё собралось!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.