unique_ptr und raw-pointer oder shared_ptr?



  • Hallo zusammen,

    ich habe ja inzwischen gelernt, dass es sinnvoll ist für "besitzende" Zeiger smartpointer zu verwenden.

    Angenommen eine Klasse verwaltet Objekte in unique-Pointern und andere Klassen benötigen Zugriff darauf ist es legitim und guter Stil von dieser Klasse rohe Zeiger zu übernehmen, wenn die benutzenden Klassen den Besitz nicht übernehmen/teilen müssen?

    foo* getFoo();
    

    Oder sollte ich stattdessen lieber shared-Pointer einsetzen?

    Die Verwaltungsklasse existiert natürlich über die gesamte Laufzeit.

    Gruß,
    temi



  • Warum behauptest du etwas gelernt zu haben, wenn du es nicht anwenden kannst?



  • Warum kannst du nicht einfach auf eine Frage antworten? Oder es einfach ganz sein lassen, wenn du keine Lust dazu hast.



  • temi schrieb:

    Angenommen eine Klasse verwaltet Objekte in unique-Pointern und andere Klassen benötigen Zugriff darauf ist es legitim und guter Stil von dieser Klasse rohe Zeiger zu übernehmen, wenn die benutzenden Klassen den Besitz nicht übernehmen/teilen müssen?

    Ja. Oder Referenzen, wenn kein nullptr zurückgegeben werden können soll (und intern sichergestellt ist, dass das auch geht).



  • temi schrieb:

    Warum kannst du nicht einfach auf eine Frage antworten? Oder es einfach ganz sein lassen, wenn du keine Lust dazu hast.

    Wenn du Angst vor unbequemen Antworten hast frag nicht.



  • manni66 schrieb:

    temi schrieb:

    Warum kannst du nicht einfach auf eine Frage antworten? Oder es einfach ganz sein lassen, wenn du keine Lust dazu hast.

    Wenn du Angst vor unbequemen Antworten hast frag nicht.

    Bist du als C++-Guru auf die Welt gekommen? Herzlichen Glückwunsch dazu!

    Ich habe keine Angst vor unbequemen Antworten. Du kannst mir gerne schreiben, was ich nicht richtig mache, aber ich wüsste dann auch gerne warum es falsch ist.



  • theta schrieb:

    Ja. Oder Referenzen, wenn kein nullptr zurückgegeben werden können soll (und intern sichergestellt ist, dass das auch geht).

    Danke!


Log in to reply