如何在不相关类型的共享指针中共享相同的引用计数器?
How to share the same reference counter in shared pointers of unrelated types?
我有一个 class 成员是另一个成员。我想将指向 master class 的共享指针转换为成员的共享指针。即两个对象都有共同的生命周期,最后一个超出范围的对象将正确地销毁它们。
#include<memory>
struct Mem
{
};
struct Cont
{
Mem m;
};
我尝试了以下有效但不完美的方法。特别是 mptr.unique()
不会正确。有没有更好的方法来正确共享参考计数器?
void foo()
{
std::shared_ptr<Cont> contPtr = std::make_shared<Cont>();
std::shared_ptr<Mem> mptr(&contPtr->m, [contPtr](Mem*){});
}
std::shared_ptr<Cont> contPtr = std::make_shared<Cont>();
std::shared_ptr<Mem> mptr(contPtr, &contPtr->m);
是 (8)
我有一个 class 成员是另一个成员。我想将指向 master class 的共享指针转换为成员的共享指针。即两个对象都有共同的生命周期,最后一个超出范围的对象将正确地销毁它们。
#include<memory>
struct Mem
{
};
struct Cont
{
Mem m;
};
我尝试了以下有效但不完美的方法。特别是 mptr.unique()
不会正确。有没有更好的方法来正确共享参考计数器?
void foo()
{
std::shared_ptr<Cont> contPtr = std::make_shared<Cont>();
std::shared_ptr<Mem> mptr(&contPtr->m, [contPtr](Mem*){});
}
std::shared_ptr<Cont> contPtr = std::make_shared<Cont>();
std::shared_ptr<Mem> mptr(contPtr, &contPtr->m);
是 (8)