C ++ vector :: erase抱怨重载分辨率&删除运算符'=='

时间:2017-01-16 13:02:28

标签: c++ vector stl stdvector

我在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代码。 我擦除项目的方式有什么问题?还有其他更好的方法可以逐项删除吗?

1 个答案:

答案 0 :(得分:2)

ForwardIterator remove要求std::vector处理MyBaseClass多通保证指定operator== 必须实施{{1}}。

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