[英]shared_ptr object global deletion
我想使用像std库的shared_ptr这样的智能指针,但是可以在不删除那些指针的情况下为共享该对象的每个shared_ptr删除该对象。
例如,如果我使用std :: shared_ptr
shared_ptr<A> p1 = make_share<A>();
shared_ptr<A> p2 = shared_ptr<A>(p1);
p1.reset();
// now p2 still contain the object of type A
// instead of nullptr
有没有办法做到这一点,或者有其他选择吗? 我做错了吗?
绝对。 std::shared_ptr
附带了std::weak_ptr
,该指针可以指向由一组std::shared_ptr
托管的对象,并检查其是否仍处于活动状态,但不会延长该对象的寿命。
您只需要将原始std::shared_ptr
保留在您的对象中,然后将std::weak_ptr
借给该对象的其他用户即可。 当必须销毁对象时,请重置std::shared_ptr
,然后所有剩余的std::weak_ptr
都可以知道(当用户尝试锁定它们时,它们将返回null std::shared_ptr
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.