gpt4 book ai didi

C++ vector::erase 提示重载解析和删除运算符 '=='

转载 作者:行者123 更新时间:2023-11-27 23:57:16 25 4
gpt4 key购买 nike

我在 C++ 上使用 std::vector 存储类对象列表,使用 vector::push_back

我的 add 函数接受基类类型,以便可以跨使用相同的方法。

Add(MyBaseClass object) {
my_vector.push_back(object)
}

我有删除功能,可以按添加的每个项目删除它

Remove(MyBaseClass object) {
my_vector.erase(std::remove(my_vector.begin(), my_vector.end(), object), my_vector.end());
}

添加工作正常,但我的删除方法出现以下错误:

overload resolution selected deleted operator '=='
if (!(*__i == __value_))
~~~~ ^ ~~~~~~~~

我从 here 中提取了 vector::erase 代码. 我删除项目的方式有什么问题?还有其他更好的按项目删除的方法吗?

最佳答案

ForwardIterator 要求 removestd::vector 上工作的 Multipass 保证 指定 MyBaseClass 必须实现operator==

您的类似乎没有实现这一点,因此编译失败。

关于C++ vector::erase 提示重载解析和删除运算符 '==',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41677041/

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