Я пытаюсь этот код в Qt 5.12:
//Definition of map
QMap<int, ZoneData*> mapId2Pointer_;
//Some values filled in mapId2Pointer_ here...
QMapIterator<int, ZoneData*> iteratorId2Pointer(mapId2Pointer_);
while (iteratorId2Pointer.hasNext())
{
iteratorId2Pointer.next();
if (iteratorId2Pointer.value() == _climbZoneData)
{
iteratorId2Pointer = mapId2Pointer_.erase(iteratorId2Pointer); //<- ERROR
}
}
Но в последней строке кода компилятор выдает эту ошибку:
error: нет подходящей функции для вызова 'QMap :: erase (QMapIterator &) 'iteratorId2Pointer = mapId2Pointer_.erase (iteratorId2Pointer);
Я видел много примеров и много гуглил, но безуспешно.Все примеры похожи на приведенные выше, каждый использует QMapIterator в качестве параметра в вызове QMap :: erase ().Но в моем коде невозможно выполнить преобразование из QMapIterator в QMap :: iterator.
В чем может быть причина этой ошибки?