Ich wollte einen Smart-Zeiger wie shared_ptr der Std-Bibliothek verwenden, aber wo wäre es möglich, das Objekt für jede shared_ptr zu löschen, die es teilen, ohne diese Zeiger zu löschen.shared_ptr Objekt globale Löschung
Zum Beispiel, wenn ich std :: shared_ptr
shared_ptr<A> p1 = make_share<A>();
shared_ptr<A> p2 = shared_ptr<A>(p1);
p1.reset();
// now p2 still contain the object of type A
// instead of nullptr
Gibt es eine Möglichkeit, das zu tun oder nicht gibt einige Alternativen? Tue ich es falsch?
Sie machen es irgendwie falsch. Der Zweck von shared_ptr ist, dass das Objekt nur dann zerstört wird, wenn niemand es mehr benutzt. Sie verwenden also die Art von Zeiger, der versucht, das zu verhindern, was Sie tun möchten. – Hayt
Ist es meine oder scheint Ihre Beschreibung Ihrem Codebeispiel zu widersprechen? Gemeinsame Zeiger funktionieren bereits gemäß Ihrem Codierungsbeispiel. – Galik
Sry, meine Erklärung kann schlecht sein. Ich meinte, existiert etwas anderes als shared_ptr, das p2 zu einem Nullptr nach p1.reset() haben könnte? – pepece