use*_*112 2 c++ move unique-ptr move-semantics c++11
我有一个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;
Run Code Online (Sandbox Code Playgroud)
这是因为要进行分配,我需要为定义一个移动分配运算符MyClass?该类仅包含几个unordered_maps,一个集合和几个基元。没有指针成员。
您无法将std::unique_ptr元素向量复制-分配给另一个向量,因为您无法复制std::unique_ptr自身。它是独一无二的!
您定义的任何操作都不MyClass能改变这一事实。
不过,您可以从这样的向量移开-但这意味着原始向量将不再包含这些std::unique_ptr元素。
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |