• [^] # Re: peut-être ceci ?

    Posté par . En réponse au message Petit soucis avec les shared_ptr. Évalué à 2.

    Mec, le but des shared_ptr, unique_ptr et autres est d'implanter une notion de propriété (ownership) qui, en gros représente la responsabilité de détruire l'objet et libérer la mémoire sur laquelle il a été construit.
    Si l'objet est global ou qu'il est alloué sur la pile, il est détruit automatiquement quand le programme s’arrête ou quand le programme quitte le scope dans lequel il a été déclaré. En conséquence, il n'y a aucun intérêt à créer un pointeur intelligent dessus.

    Si tes objets sont placés dans un graphe, cette responsabilité devrait revenir soit au graphe lui même, soit à des objets intermédiaires, par exemple les vector que tu utilises dans ton implantation. Su tu utilises un <vector<shared_ptr<T>>, les shared_ptr auront cette responsabilité, avec un effet de bord : tu pourras alors avoir détruit ton objet graphe et toujours avoir des T non-détruits si jamais tu as gardé des copies de shared_ptr. À toi de décider si c'est une bonne ou mauvaise chose .