Ich versuche, die in der Abbildung unten gezeigten Beziehungen zu erstellen. A erstellt ein B-Objekt als gemeinsamen Zeiger. Es geht dann weiter, den geteilten Zeiger zu einem Bündel von D'zu übergeben.Verwalten von sharedPointers C++
Wenn jedoch ein B erstellt wird, erstellt es ein C-Objekt, das vor A verborgen werden soll und nur von B bekannt ist. Obwohl C wissen muss, dass B funktioniert.
Da ein geteilter Zeiger bereits auf B gesetzt ist, gibt es eine Möglichkeit, diesen gemeinsamen Zeiger innerhalb des Konstruktors von B an C zu übergeben?
Natürlich kann ich es machen, indem Sie den this
-Zeiger an C übergeben, und speichern Sie es als einen rohen Zeiger. Aber was passiert, wenn B zerstört wird? Dann würde C versuchen, den B-Zeiger zu löschen, aber da das gerade gelöscht wird, was passiert dann?
Ich hoffe, Sie können das für mich sortieren.
Mit freundlichen Grüßen.
'C' ist ein Mitglied Objekt von' B' richtig? – NathanOliver
Warum sollte C versuchen, B zu löschen? Die Lebensdauer von B wird von shared_ptrs verwaltet, nicht von C. – nwp
@nwp Das macht eigentlich Sinn. Wenn B gelöscht wird, wenn refCount 0 ist, würde es C löschen. C müsste dann den Zeiger nicht löschen, da das Objekt, auf das es verweist, B bereits gelöscht ist? –