std::enable_shared_from_this<T>::shared_from_this
Min standard notice:
Returns a std::shared_ptr
# Declarations
std::shared_ptr<T> shared_from_this();
(since C++11)
std::shared_ptr<T const> shared_from_this() const;
(since C++11)
# Return value
# Example
#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";
}