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:
Evidemment ça ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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--; } }
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
Partager