Luc*_*cas 5 c++ smart-pointers unique-ptr
我的类包含一个指向数组的唯一指针。当调用复制构造函数时,我希望该类创建自己的唯一指针数组,并仅复制旧唯一指针数组的内容。我不断收到关于从 const 值转换的错误,并且我不知道如何解决它。
我的指针在 private 下声明如下:
std::unique_ptr<Manager[]> managers;
Run Code Online (Sandbox Code Playgroud)
我计划只循环遍历数组并手动复制,所以我制作了这个复制构造函数:
Restaurant::Restaurant(const Restaurant &_r)
{
Manager *_managers = _r.managers;
for (int i = 0; i < MAX_MANAGERS; i++)
{
managers.get()[i] = _managers[i];
}
}
Run Code Online (Sandbox Code Playgroud)
它在这一行给出了 const 转换错误:
Manager *_managers = _r.managers;
Run Code Online (Sandbox Code Playgroud)
我只想制作一个深拷贝。我该如何去做才能使这项工作成功?
它无法编译的原因是它的
_r.managers类型是std::unique_ptr<Manager[]>,但您想用它初始化一个原始指针。
只需将其更改为:
Restaurant::Restaurant(const Restaurant &_r)
{
for (int i = 0; i < MAX_MANAGERS; i++)
{
managers.get()[i] = _r.managers.get()[i];
}
}
Run Code Online (Sandbox Code Playgroud)
或者首先获取智能指针的数据(这是一个数组)
Manager *_managers = _r.managers.get();
Run Code Online (Sandbox Code Playgroud)
然后你就可以像以前一样使用它:
for (int i = 0; i < MAX_MANAGERS; i++) {
managers.get()[i] = _managers[i];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4216 次 |
| 最近记录: |