【发布时间】:2014-01-12 19:18:43
【问题描述】:
我会先发布我的代码然后解释我的问题:
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>]'|
谢谢!
【问题讨论】:
-
您正在插入
entity_vector的副本。这不起作用,因为元素是unique_ptrs,即不可复制,因此vector本身是不可复制的。
标签: c++ c++11 vector stl stdmap