gpt4 book ai didi

c++ - 无法分配对象,因为它的复制赋值运算符被隐式删除错误

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:05 25 4
gpt4 key购买 nike

在我的小型打砖 block 克隆游戏中,我试图从 vector 中删除一些值。该 vector 包含 Brick 类,它们以类似网格的模式在屏幕上实例化。当球和砖 block 发生碰撞时,砖 block 需要消失。我正在尝试用这一小段代码来完成此任务:

for (int i = 0; i < bricks.size(); ++i)
{
if (bricks[i].destroyed)
{
bricks.erase(bricks.begin()+i);
}
}

但不幸的是我得到了这个编译错误:

Object of type 'Brick' cannot be assigned because its copy assignment operator is implicitly deleted

当我点击这个错误时,它会把我带到这段代码:

for (; __first != __last; ++__first, (void) ++__result)
*__result = _VSTD::move(*__first);
return __result;

有人可以给我建议如何解决这个问题吗?

最佳答案

Can somebody give me advice how to solve this?

当您删除 std::vector 中的非 last 元素时,它必须将所有元素移到它后面。它可以通过移动赋值(对于 C++11 或更高版本)或元素的复制赋值运算符来完成。所以要解决它,您要么需要为类 Brick 提供这样的运算符,要么使用不必移动元素的容器,例如 std::liststd: :set 等或存储智能指针而不是对象本身。

关于c++ - 无法分配对象,因为它的复制赋值运算符被隐式删除错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34752505/

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