簡體   English   中英

將所有權從std :: shared_ptr移至std :: unique_ptr

[英]Move ownership from std::shared_ptr to std::unique_ptr

我有一個類A ,它有一個類型為std::unique_ptr的字段:

class A
{
public:
   std::unique_ptr pointer;
// class body
};

在代碼中的某處,我使用了少量std::shared_ptr ,它指向同一個對象。 現在我想要實現的是將所有權轉移到我的類中的std::unique_ptr ,這樣如果所有shared_ptr都將被銷毀,只要這個unique_ptr保持活着,我的對象就會保持活着狀態。

我的問題是 - 是否可以將所有權從std::shared_ptr轉移到std::unique_ptr ,如果是,我該怎么做?

邏輯上這樣的場景對我來說沒有意義。

假設有一段時間可以轉移所有權,但只有在您確定只有一個 shared_ptr alives 才能這樣做; 如果是這種情況,那么你仍然可以使用shared_ptr作為A成員並假裝它是unique_ptr

然后你評論說:

這是真的,我可以在A類中創建shared_ptr 我想我再次誤解了一個概念。 我希望以這種方式表現它:如果unique_ptr死了,對象本身也會死掉,即使shared_ptr仍然指向它,但那是愚蠢的,因為他們不知道對象本身是被破壞的,因此它們不會是nullptr秒。

在這種情況下,您正在查看錯誤的智能指針。 您可能需要的是std::weak_ptr 如果是這樣,那么請確保使用std::shared_ptrstd::weak_ptr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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