c++ - 如何创建具有不可复制和不可分配对象的 vector ?

标签 c++ c++11 unique-ptr noncopyable

我有课

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

我正在尝试创建 A 类型对象的 vector

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> >' 的已删除构造函数的编译错误调用

最佳答案

std::unique_ptr 不可复制,所以需要将其移动到容器中:

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

关于c++ - 如何创建具有不可复制和不可分配对象的 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46673779/

相关文章:

c++ - 我需要声明多少次 std::ios::sync_with_stdio(false);在一个程序中

c++ - 当程序变得无响应时如何确定程序在做什么?

c++ - 使用 GTK 和 C++ 播放音频文件

c++ - 如果机器随后立即崩溃,fflush() 与 fclose() 一样能将数据保存到磁盘吗?

c++ - 为什么 64 位版本的应用程序比 32 位版本的应用程序慢得多

c++ - 将方法作为模板参数传递 C++11

c++ - 隐式与显式删除的复制构造函数

c++ - 将 std::unique_ptr 返回到多态类对象的正确方法

c++ - 将派生类的 unique_ptr 添加到基类 unique_ptr 的 vector 中

c++ - 如何创建一个类,其成员变量包含唯一指针,可复制分配?