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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
vector<Cellule *> _eCellule;
et je faits evoluer toutes mes cellules grâce à cette fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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