Hilfe mit C++ Liste mit erase-Funktion

Ich versuche zu tun, ein einfaches löschen und bekomme immer Fehler.

Hier ist das code-snippet für meine löschen:

std::list<Mine*>::iterator iterMines = mines.begin();
for(int i = oldSizeOfMines; i >0 ; i--, iterMines++)
{
    if(player->distanceFrom(*iterMines) < radiusOfOnScreen)
    {
        onScreen.push_back(*iterMines);
        iterMines = onScreen.erase(iterMines);
        iterMines--;
    }
}

Bekomme ich immer eine compiler-Meldung:

1>c:\users\owner\desktop\bosconian\code\bosconian\environment.cpp(158) : error C2664: 'std::list<_Ty>::_Iterator<_Secure_validation> std::list<_Ty>::erase(std::list<_Ty>::_Iterator<_Secure_validation>)' : cannot convert parameter 1 from 'std::list<_Ty>::_Iterator<_Secure_validation>' to 'std::list<_Ty>::_Iterator<_Secure_validation>'
1>        with
1>        [
1>            _Ty=SpaceObject *,
1>            _Secure_validation=true
1>        ]
1>        and
1>        [
1>            _Ty=Mine *,
1>            _Secure_validation=true
1>        ]
1>        and
1>        [
1>            _Ty=SpaceObject *,
1>            _Secure_validation=true
1>        ]
1>        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Ich bin verwirrt, weil ich glaube, ich gebe es den richtigen iterator.

Mine ist eine Unterklasse von SpaceObject (eine zweite generation Unterklasse ist)

Hat das etwas zu tun mit es? Und wie kann ich es beheben?

  • Nur um sicher zu gehen, ist die Zeile 158 "iterMines = auf dem Bildschirm.löschen(iterMines);"?
InformationsquelleAutor Chad | 2008-12-17
Schreibe einen Kommentar