2014-01-12 90 views
0

我會先發布我的代碼,然後解釋我的問題:有麻煩值插入一個std ::地圖的std ::字符串和std ::向量

typedef std::unique_ptr<SEntity> Entity; 
typedef std::vector<Entity> EntityVector; 
typedef std::map<std::string, EntityVector> EntityVectorMap; 

const void pushEntityVector(const std::string& key, const EntityVector& entity_vector) 
{ 
    m_entity_vector_map[key] = entity_vector; 
} 

正如你可能會看到,我試圖將一個EntityVector插入到EntityVectorMap中。但是當我這樣做時,我遇到了這個問題:

c:\program files (x86)\codeblocks\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_algobase.h|335|error: use of deleted function 'std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = SE::SEntity; _Dp = std::default_delete<SE::SEntity>]'| 

謝謝!

+1

您正在插入'entity_vector'的*副本*。這不會起作用,因爲元素是'unique_ptr's,即不可複製,因此'vector'本身是不可複製的。 – dyp

回答

3

m_entity_vector_map[key] = entity_vector嘗試複製EntityVector從而試圖複製 的Entity這基本上是複製std::unique_ptr。你不能複製std::unique_ptr(它不會是唯一的)。

您可能需要將entity_vector轉換爲m_entity_vector_map,但不能將entity_vector作爲常量參考傳入pushEntityVector

相關問題