Re: Помогите побороть ошибку
От: Chorkov Россия  
Дата: 17.09.10 12:50
Оценка: 3 (1)
Здравствуйте, 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();
}
..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.