Bonjour,

Voilà, j'ai un petit [/gros] problème avec un std::vector. Bon un peu de code serait mieux que de long discours :

Pour les objets utilisés dans le vecteur :
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
template <typename TYPE, int n>
    struct VECT
    {
        TYPE data[n];
        static const int size = n;
 
        VECT<TYPE, n>(void) { return ;}
 
        VECT<TYPE, n>(const VECT<TYPE, n>& v)
        {
            for(int i = 0; i<n; i++)
                data[i] = v.data[i];
        }
 
        ~VECT<TYPE, n>(void)
        {
            //Signal de destruction
        }
 
        inline
        TYPE& operator[] (int i)
        {
            return data[i];
        }
 
        inline
        VECT<TYPE, n>& operator= (const VECT& v)
        {
            for(int i = 0; i<n; i++)
                data[i] = v.data[i];
            return (*this);
        }
    };
Déclaration du-dit vecteur (dans une classe):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
std::vector< VECT<unsigned char, 3> > visibles;
On ajoute un élément : (dans une boucle for)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
VECT< unsigned char, 3> v;
v[0] = 1;
v[1] = 1;
v[2] = 1;
visibles->push_back( v );
à l'ajout : le vecteur augmente bien le nombre d'élément contenus mais appelle le destructeur pour chaque élément contenu (donc plusieurs destructions par objet insérés pendant les tours de boucle...).

Bref que du bonheur... et des fuites mémoires...
A noter que sans aucune opérations, si le vecteur est simplement déclaré, il y a aussi des erreurs. J'ai essayé d'utiliser un pointeur vers vecteur alloué avec new, cela supprime ce dernier bug mais les éléments continuent à être détruits...

Merci de vos conseils...