如何创建带有不可复制和不可分配对象的向量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建带有不可复制和不可分配对象的向量?相关的知识,希望对你有一定的参考价值。

我有课

class A 
 public:
  A(int x): x_(x) 
  void SetValue(int m) x_=m;
 private:
   DISALLOW_COPY_AND_ASSIGN(A);
;

我正在尝试创建A型对象的向量

vector<std::unique_ptr<A>> objects;
objects.reserve(10);
for (int i = 0; i < 10; i++) 
   auto a = MakeUnique<A>();
   a->SetValue(20);
   objects.emplace_back(a);

这将导致对已删除的'std::unique_ptr<A, std::default_delete<A> >'构造函数的编译错误调用>

我有一个类class A public:A(int x):x_(x) void SetValue(int m)x_ = m;私人:DISALLOW_COPY_AND_ASSIGN(A); ;我正在尝试创建类型为A的对象的向量vector <:...>

答案

std::unique_ptr是不可复制的,因此您需要将其移入容器:

以上是关于如何创建带有不可复制和不可分配对象的向量?的主要内容,如果未能解决你的问题,请参考以下文章

类型 '' 不可分配给类型 '() =>

如何使这个 C++ 对象不可复制?

如何修复“类型'字符串'不可分配给类型'从不'”?

iOS:Watch Kit 配对设备不可用于开发

带有 Typescript 和 react-redux 的有状态组件:“typeof MyClass”类型的参数不可分配给 Component 类型的参数

TypeScript 泛型:'类型不可分配给类型 T'