C'est bien la première fois que j'ai un souci avec un std :: vector !!

J'ai une classe K3D_Tree comportant en données membres
un std :: vector<K3D_Leaf*> trLeafs et un std :: vector<K3D_Branch*> trBranchs

K3D_Leaf et K3D_Branch sont des classes, je stocke donc les pointeurs.

Je n'ai aucun souci avec les K3D_Branch en revanche, ça plante direct à l'exécution dès que je veux insérer un malheureux K3D_Leaf.

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
 
    // Et maintenant c'est au tour du feuillage
    for (unsigned int i=0; i< this->trBranchs.size(); ++i)
    {
        K3D_Branch* branch = this->trBranchs.at(i);
 
        // On parcourt toutes les branches et seules celles aux deux derniers niveaux nous interesse
        if (branch->brLevel >= this->trMaxLevel-1)
        {
            // On fait deux feuilles par branches // <= Pour l'instant qu'une
            K3D_Leaf* bLeaf = new K3D_Leaf;
            bLeaf->create(branch);
           // this->trLeafs.push_back(bLeaf); //<= OUUU PAS BIEN :D!!
        }
    }
Quelques explications .. Les branches sont générées et placées dans le vector adéquat, sans soucis, ça marche niveau rendu à lexécution.
Pour le feuillage, j'en mets que sur les branches extérieures à l'arbre, d'où ma boucle. Elles sont repérées par leur brLevel
J'instancie un pointeur d'objet de K3D_Leaf, je charge et calcule toutes les données membres de K3D_Leaf à l'aide de create() (j'ai vérifié, les valeurs sont correctes, pas de division par zéro etc ..).

Quand j'essaie de mettre mon objet dans le tableau trLeafs, ça plante totalement, je n'arrive meme pas à mettre un try/ catch dessus car l'ordi reboot !!

Peut-il arriver qu'un push_back() échoue ?

J'ai des soupçons sur OpenGL, je sais que faire 2 glDisable() de suite par exemple peut provoquer des erreurs subtiles mais le reboot n'intervient que lorsque cette ligne n'est plus en commentaire (. D'habitude, ça survient n'importe quand avec ce genre d'erreurs (hélas)