J'ai lu ton code en diagonale, y'a rien d'immédiatement visible mais j'ai pas trop le temps de m'y plonger.
Par contre, juste une petite remarque.

panthere a écrit:
bon alors voila ce que sa donne j'ai pas utiliser le smart pointer finalement ,car je ne maitrise pas le sujet
C'est bien dommage, car ça repose sur un concept de base du C++ : le RAII (
Resource Acquisistion Is Initialisation), qui est lui-même intimement lié à un autre concept de base : les exceptions et leur gestion correcte (
Exception Safety). Si tu ne connais pas correctement ces deux points (je ne dis pas les maîtriser, ça prend des années

) tu n'écris en fait que du « C avec des classes », mais comme tu utilises aussi des libs C++ qui, elles, intègrent bien ces notions, ça ouvre la voie à plein de bugs subtils.
Bref, je te conseille vivement de te documenter à fond là dessus, c'est vraiment très important pour faire du C++ correct.
Un bon point de départ c'est les
GOTW d'
Herb Sutter (en anglais) qui traitent beaucoup de ces sujets, de manière aussi abordable que possible.
1) bien comprendre le principe d'Exception Safety et ses diverses déclinaisons
2) après, le RAII est assez simple à comprendre
Les smart pointers ne sont qu'un cas particulier de RAII, pas besoin de te documenter particulièrement dessus, quand tu auras compris (2) tu auras forcément compris les smart pointers aussi. Et tu verras le C++ d'une toute autre manière.

Exemple typique que je donne souvent (d'ailleurs en entretien ça permet de faire le tri rapidement

)... En l'état ce code a potentiellement un gros problème, lequel, pourquoi ? Comment le corriger (2 manières) ?
Code:
void fonction()
{
Classe* obj = new Classe();
obj->methode();
delete obj;
}
