Bonjour, j'ai des segfaults lorsque j'exécute mon code.

J'ai une classe comportant un pointeur et un destructeur (version simplifiée de mon code) :
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
 
class A {
 
private :
   img *b;
 
};
 
A::A() {
   b = new img();
}
 
A::~A() {
   if(b)
      delete b;
}
Ensuite je construits un vecteur d'objets A et ça plante à cause de l'appel interne de vector au destructeur de A :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
vector <A> v;
 
for (unsigned i; i < 5; ++i)
   v.push_back(A());
si je comprends mon débugger, vector réalise des copies d'objets et appelle donc plusieurs fois les destructeurs, puis ça plante avec un *b qui pointe su n'importe quoi dans l'un des destructeurs.

Si je vire le destructeur ça marche, mais j'aimerais écrire mon code proprement, que faire ? XD

Merci