OVH Cloud OVH Cloud

Annuler la construction dans un constructeur

12 réponses
Avatar
PurL
Bonjour,

Je dois faire ceci :

HANDLE h = MaFonction(fichier);
MaClasse *objet;

//en cas de succès de ma fontion
//je créé un objet correspondant
if (h) objet = new MaClasse(h);

//en cas d'echec, je m'arrête là
else return;

Maintenant, je voudrais que ce soit ma classe qui s'occupe d'appeler
MaFonction(...) :

MaClasse *objet;
objet = new MaClasse(fichier);

//si echec alors je sors
if (objet == NULL) return;

Cela implique que dans le constructeur de ma classe, si MaFonction renvoie
0(echec) j'annule la construction de la classe et je renvoie NULL comme
pointeur, est-ce possible ?

La meme question se pose pour le destructeur :
Dans le destructeur, je dois appeler une fonction, si celle-ci echoue, je
voudrais que la destruction soit annulée, comment faire ?

Merci pour votre aide,

PurL.

2 réponses

1 2
Avatar
Michel Michaud
Dans news:,
Achête-toi le livre « Design Patterns : Elements of Reusable
Object-Oriented Sofware », de Gamma, Helm, Johnson et Vlissides
(ISBN 0-201-63361-2). C'est un des must. (Il existe en traduction,
mais d'après ce qu'on me dit, la traduction n'est pas très bonne.)


Mais elle offre l'avantage de venir avec un CD contenant la
version originale en HTML, fort pratique...

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/

Avatar
Michel Michaud
Dans news:c2a5kt$8ot$, Etienne
a écrit ...
(Il existe en traduction, mais d'après ce qu'on me dit,
la traduction n'est pas très bonne.)


Je la trouve pas si mauvaise que ça.
Par contre, il y manque, me semble-t-il, le pattern "Mutation".


Ce n'est pas dans la version anglaise non plus :-)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/


1 2