use*_*517 2 c++ noncopyable unique-ptr c++11
我上课了
class A {
public:
A(int x): x_(x) {}
void SetValue(int m) {x_=m};
private:
DISALLOW_COPY_AND_ASSIGN(A);
};
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建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);
}
Run Code Online (Sandbox Code Playgroud)
这导致对已删除的构造函数的编译错误调用 '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));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
615 次 |
| 最近记录: |