gpt4 book ai didi

c++ - 在复制构造函数中复制唯一指针数组的内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:02 26 4
gpt4 key购买 nike

我的类包含一个指向数组的唯一指针。调用复制构造函数时,我希望该类创建自己的唯一指针数组,并只复制旧的唯一指针数组的内容。我不断收到关于从 const 值转换的错误,我不确定如何解决它。

我的指针是这样声明的:

std::unique_ptr<Manager[]> managers;

我打算只循环遍历数组并手动复制,所以我制作了这个复制构造函数:

Restaurant::Restaurant(const Restaurant &_r)
{
Manager *_managers = _r.managers;
for (int i = 0; i < MAX_MANAGERS; i++)
{
managers.get()[i] = _managers[i];
}
}

它在这一行给出了 const 转换错误:

Manager *_managers = _r.managers;

我只想深拷贝。我怎样才能让它发挥作用?

最佳答案

它无法编译的原因是 _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];
}
}

或者先取一个智能指针的数据(数组)

Manager *_managers = _r.managers.get();

然后您可以像以前一样使用它:

for (int i = 0; i < MAX_MANAGERS; i++) {
managers.get()[i] = _managers[i];
}

关于c++ - 在复制构造函数中复制唯一指针数组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21419671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com