我有一个std::vector<std::unique_ptr<MyClass>>
,我正在将其分配给相同类型的第二个向量。
我收到此编译器错误:
/opt/gcc-8.2.0/include/c++/8.2.0/bits/stl_algobase.h:324:18: error: use of deleted function 'std::unique_ptr<_Tp, _Dp>& std::unique_ptr<_Tp, _Dp>::operator=(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = MyClass; _Dp = std::default_delete<MyClass>]'
*__result = *__first;
这是因为要进行分配,我需要为定义一个移动分配运算符MyClass
?该类仅包含几个unordered_maps,一个集合和几个基元。没有指针成员。
您无法将std::unique_ptr
元素向量复制-分配给另一个向量,因为您无法复制std::unique_ptr
自身。它是独一无二的!
您定义的任何操作都不MyClass
能改变这一事实。
您可以从这样的向量移开-但这意味着原始向量将不再包含这些std::unique_ptr
元素。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句