Ich kann einfach nicht verstehen, wie std::enable_shared_from_this::shared_from_this
einen gemeinsamen Pinter zurückgibt, der den Besitz mit vorhandenem Zeiger teilt. Mit anderen Worten haben Sie this:Wie std :: enable_shared_from_this :: shared_from_this funktioniert
std::shared_ptr<Foo> getFoo() { return shared_from_this(); }
Also, wenn Sie getFoo
nennen wie funktioniert es genau das, was die anderen shared_ptr
ist das Eigentum zu teilen und keine separaten shared_ptr
, die besitzt die gleichen this
zu erstellen.
Ich muss dies verstehen, um zu verstehen, wie shared_ptr von einem Objekt zu erstellen, die alle die gleiche Ref-Zahl erhöhen und separate shared_ptr
s nicht initialisieren.
http://en.cppreference.com/w/cpp/memory/enable_shared_from_this Werfen Sie einen Blick auf die Notizen – StoryTeller
Ich habe die Hinweise gesehen, dass die gemeinsame Umsetzung beschreiben . Davor habe ich mir auch den Quellcode angeschaut. Aber ich konnte nicht verstehen, wie dieses 'weak_ptr' initialisiert wird, wenn zuerst shared_ptr außerhalb der Klasse erstellt wird. Eine Klasse kann nicht wissen, dass wir ihren Zeiger in ein "shared_ptr" eingekapselt haben. – Narek
Sie sollten sich auch die Quelle von 'std :: shared_ptr' ansehen. Die Notiz gibt klar an, dass es Code gibt, der das Vorhandensein von "std :: enable_shared_from_this" als Basisklasse erkennt. – StoryTeller