C++ vector::erase 抱怨过载解析和删除运算符'=='

C++ vector::erase complains about overload resolution & deleted operator '=='

本文关键字:删除 运算符 erase vector C++      更新时间:2023-10-16

我在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_))
              ~~~~ ^  ~~~~~~~~

我从这里拿起了矢量::擦除代码。我擦除项目的方式有什么问题?还有其他更好的按项目擦除的方法吗?

remove

std::vector上工作的ForwardIterator要求的多通道保证指定MyBaseClass必须实现operator==

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