bonjour, j'ai un probleme lorsque je supprime un élement de mon vecteur. je vais essayer de me faire comprendre.
Voila, j'ai un vecteur déclarer comme suit :
vector<Cellule *> _eCellule;
et je faits evoluer toutes mes cellules grâce à cette fonction :
1 2 3 4 5
| void Population::faireEvoluer()
{
vector<Cellule *>::iterator it;
for(it=this->_eCellule.begin();it!=this->_eCellule.end();it++) (*it)->evoluer();
} |
lorqu'une cellule meurt, elle appelle cette methode de la class population :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
void Population::supprimerCellule(Cellule *pC)
{
vector<Cellule *>::iterator it = this->_eCellule.begin();
//on recherche l'indice à supprime
bool find=false;
size_t indice=0;
while( (it!=this->_eCellule.end()) && (!find) )
{
if( (*it)==pC ) find = true;
else it++;
}
this->_eCellule.erase(it);
} |
La suppression de la cellule se passe tres bien.
mais, la fonction faireEvoluer veut quand même faire evoluer la cellule supprimée.....et donc ca plante.
je pense que le probleme vient de la pile de ma fonction Population::faireEvoluer(). elle ne prend pas en compte la modification du vecteur par la fonction Population::supprimerCellule.
ca ne marche que si je rappelle la fonction faireevoluer à la fin de la methode de suppression, mais on ne peut pas dire que cela soit super propre.
J'espere que j'ai réussi à expliquer correctement mon probleme
Partager