我有课
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/