L'objet doit être valide tant qu'on a besoin de lui, et lorsque l'on a plus besoin de lui... eh bien on n'a plus besoin de lui.
Qu'il soit détruit ou non à ce moment-là n'a pas vraiment d'importance, sauf si l'on a besoin de la mémoire qu'il occupe.
C'est pour cette raison que j'avais pensé aux
std::shared_ptr.
Sauf que lorsque je veux le référencer, il faut d'abord que je le retrouve, ou que je le crée s'il n'existe pas encore.
Et à ce moment-là, les éventuelles autres références à l'objet sont éparpillées dans le programme, et je n'ai aucun moyen de savoir où.
Il me faut donc une table qui associe l'objet à une clé. (À moins qu'il y ait moyen de faire autrement ?)
Mais comment référencer l'objet en question dans la table ?
Une référence C++ ou un pointeur nu ?
Le nombre de références des
std::shared_ptr ne sera pas correct ; et l'objet sera détruit plusieurs fois (si le programme ne plante pas avant)...

Un
std::shared_ptr ?
Dans ce cas il y aura toujours au moins une référence active tant que le pointeur intelligent sera dans la table.
Autant donner la responsabilité à la table de détruire l'objet (et donc l'utilisation de
std::unique_ptr).
En fait, j'ai l'impression que conceptuellement, il me faudrait un
std::shared_ptr, mais qu'en pratique, je serai obligé d'utiliser un
std::unique_ptr...
Sauf si j'ai une erreur dans mon raisonnement.
J'en ai une ?

Partager