std::enable_shared_from_this<T>::shared_from_this
Von cppreference.com
< cpp | memory | enable shared from this
| std::shared_ptr<T> shared_from_this(); |
(1) | (seit C++11) |
| std::shared_ptr<T const> shared_from_this() const; |
(2) | (seit C++11) |
Gibt einen std::shared_ptr<T> zurück, der sich die Besitzerschaft von *this mit allen bereits existierenden std::shared_ptr teilt, die auf *this verweisen.
Inhalt |
[bearbeiten] Rückgabewert
std::shared_ptr<T>(weak_this )
[bearbeiten] Ausnahmen
Wenn shared_from_this auf einem Objekt aufgerufen wird, das nicht zuvor von einem std::shared_ptr geteilt wurde, wird std::bad_weak_ptr durch den std::shared_ptr-Konstruktor ausgelöst.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#include <iostream> #include <memory> struct Foo : public std::enable_shared_from_this<Foo> { Foo() { std::cout << "Foo::Foo\n"; } ~Foo() { std::cout << "Foo::~Foo\n"; } std::shared_ptr<Foo> getFoo() { return shared_from_this(); } }; int main() { Foo *f = new Foo; std::shared_ptr<Foo> pf1; { std::shared_ptr<Foo> pf2(f); pf1 = pf2->getFoo(); // shares ownership of object with pf2 } std::cout << "pf2 is gone\n"; }
Ausgabe
Foo::Foo pf2 is gone Foo::~Foo
[bearbeiten] Siehe auch
| (C++11) |
intelligenter Zeiger mit semantisch geteiltem Objektbesitz (Klassen-Template) |