Share members of a managed object
The std::shared_ptr
class provides an aliasing constructor to share a pointer managed by another unrelated pointer:
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:
- We start with a class for the managed object:
struct animal { string name{}; string sound{}; animal(const string& n, const string& a) ...