Share Members of a Managed Object
Learn to share members of a managed object.
The std::shared_ptr
class provides an aliasing constructor
shared_ptr( shared_ptr<Y>&& ref, element_type* ptr ) noexcept;
This returns an aliased shared_ptr
object that uses the resources of ref
but returns a pointer to ptr
. The use_count
is shared with ref
. The deleter is shared with ref
. But get()
returns ptr
. This allows us to share a member of a managed object without sharing the entire object, and without allowing the entire object to be deleted while we're still using the member.
How to do it
In this recipe, we create a managed object and share members of that object:
struct animal {string name{};string sound{};animal(const string& n, const string& a): name{n}, sound{a} {cout << format("ctor: {}\n", name);}~animal() {cout << format("dtor: {}\n", name);}};
This class has two members, string
types for name
and ...
Get hands-on with 1400+ tech skills courses.