簡體   English   中英

2 unique_ptr的地圖

[英]map of 2 unique_ptr's

關於在容器中使用unique_ptr ,我有幾個問題。 這就是我想要做的:

class Stuff
{
public: 
    std::map<std::unique_ptr<int>, std::unique_ptr<int> > GetInfo() {return m_mapInfo;}

    // Is this bad??
    std::map<std::unique_ptr<int>, std::unique_ptr<int> > MoveInfo() {return std::move(m_mapInfo);}

private:    
    std::map<std::unique_ptr<int>, unique_ptr<int> > m_mapInfo;
};

這不會編譯。 它給我錯誤C2248。 我正在使用VS2012。

現在,我不使用intunique_ptr 它們實際上是抽象基類的unique_ptr ,但是我想消除任何有關錯誤是否歸因於我的復制/移動構造函數/賦值運算符的問題。

任何人都可以解釋該錯誤,以及如何解決該錯誤?

第二,我的MoveInfo()函數是不好的做法嗎? 只能為每個Stuff對象調用一次,因為map成員之后將為空,是嗎?

unique_ptr用於獲取並保持指針的所有權,即唯一。 這就是為什么它們無法復制

將副本返回到地圖將意味着復制(復制)其所有內容,這是由於unique_ptr不可能實現的。 這就是為什么您收到C2248消息的原因。

返回對映射的引用,或者考慮使用shared_ptr (以便多個映射可以共享對同一指針的引用)。

暫無
暫無

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

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