Bonsoir
Après avoir lu : https://www.developpez.net/forums/d1...tion-pointeur/
Je suis en train de porter du code C# en C++.
Mon souci est de convertir ce qui ressemble fortement à un pattern Fabrique et d'y appliquer au mieux le RAII, qui n'est évidemment pas utilisé en C#.
Dans le code original, j'ai une méthode qui me renvoie un objet (en fait une référence implicite) d'une classe abstraite. L'objet réel étant une instance d'une classe concrète construit dans la Fabrique et qui sera nettoyé par le GC.
En C++, pas possible de renvoyer une référence sur un objet qui serait détruit dès la sortie de portée de la méthode Fabrique. Je renvoie donc un pointeur et l'objet appelant a la charge de le détruire. C'est pas du tout RAII et exception-safe.
Si j'ai bien compris, en C++11, unique_ptr permet d'encapsuler construction et destruction automatique. Mais cette classe a bien une sémantique d'entité. Comment la mettre en résultat de fonction qui, par définition, fait une copie?
Et comment se débrouiller en C++98/03 ?
Je ne suis pas sûr de comprendre, on cherche bien à ce que l'objet qui alloue la mémoire soit responsable de la restituer automatiquement dans son destructeur.Citation:
L'idéal est donc au moins de séparer ce qui construit de tes ressources de ce qui les maintient en mémoire
Une Fabrique RAII exige-t-elle donc de pouvoir utiliser la sémantique de déplacement et donc le C++11 a minima ?