J'essaie de faire un simple effacement et continue d'obtenir des erreurs.Aide avec la fonction d'effacement de liste C++
Voici l'extrait de code pour mon effacement:
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--;
}
}
Je reçois un message du compilateur:
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
Je suis perplexe parce que je crois que je lui donne le bon iterator .
mine est une sous-classe de SpaceObject (une deuxième sous-classe de génération qui est)
Est-ce que cela a quelque chose à voir avec elle? Et comment pourrais-je le réparer?
Juste pour vous assurer, est la ligne 158 "iterMines = onScreen.erase (iterMines);"? –