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 : 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--;
    }
}
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 : 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