[英]Move std::vector<std::unique_ptr<T>> to std::vector<std::shared_ptr<T>>
[英]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_ptr
和std::weak_ptr
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.