簡體   English   中英

shared_ptr對象全局刪除

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM