Здравствуйте, EXL, Вы писали:
EXL>Пытаюсь собрать кое-какую игру на телефон, но совершенно не знаю языка.
EXL>Помогите пожалуйста разобраться, насколько я понял ошибка синтаксическая.
EXL>Лог компилятора:
EXL>..
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*>]()'
..
EXL>
Пишет, что не может сравнить const_reverse_iterator с reverse_iterator. Это очень странно.
(Все разумные реализации STL должны уметь.)
Попробуй так:
EXL>Queue.cpp:
..
void Queue::update()
{
Sprite::update();
for (list<Tile*>::reverse_iterator it = tiles.rbegin(); it != tiles.rend(); ++it)
if (it == tiles.rbegin())
(*it)->redraw();
else
(*it)->update();
return;
}
void Queue::redraw()
{
Sprite::redraw();
for (list<Tile*>::reverse_iterator it = tiles.rbegin(); it != tiles.rend(); ++it)
(*it)->redraw();
}
..