Problème pour vider un vector . ..
Bonsoir !
Alors voilà, j'ai un souci pour vider mon vector, j'ai essayé avec .clear() .erase() . . .etc, rien ne fonctionne, le vecteur est toujours là . . .
C'est dans le cadre de la "gestion" d'un univers, donc il y a un vecteur galaxies, qui contient des vecteurs systèmes solaires, qui contiennent des vecteur planètes, qui eux même contiennent d'autres vecteurs . . .
Bref, En gros ça "s'architecture" comme cela:
std::vector<CGalaxie>.std::vector<CSystemeSolaires>.std::vector<CPlanete>
Mon objectif, c'est de supprimer tout les vecteurs planètes.
Pour ce faire, je fais comme ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| void CJeu::ViderVecteursPlanetes()
{
int j2=Galaxie.SystemeSolaires.size(); //Je récupère le nombre de systèmes
while(j2>0)
{
for(int i=Galaxie.SystemeSolaires[j2].Planetes.size();i!=0;i--)
{
Galaxie.SystemeSolaires[j2].Planetes.clear();
}
j2--;
}
} |
Evidemment ça ne fonctionne pas.
AUCUNE altération de la mémoire utilisée, alors que .clear() est sensé appeler le destructeur des objets "Planetes", et donc détruire l'objet, hors . . . rien.
Et l'objet existe toujours, étant donné que je peux toujours y accéder . . .
Peut-être que j'ai mal rempli les vecteurs ?
J'ai fais comme ceci:
Code:
1 2 3
| *CPlanete PlaneteTemporaire = new CPlanete();
Planetes.push_back(*PlaneteTemporaire); //C'est un std::vector<CPlanete> Planetes
delete PlaneteTemporaire; |
Bref, je sèche, j'ai fais une erreur, mais où ?
Merci de votre aide :ccool: