繁体   English   中英

C ++ vector :: erase抱怨重载解决方案并删除了运算符'=='

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

我在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());
}

添加工作正常,但我的Remove方法给出以下错误:

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

我从这里获取了vector :: erase代码。 我删除项目的方式有什么问题? 还有其他更可取的按项目擦除的方法吗?

要在std::vector上运行removeForwardIterator要求的 ForwardIterator 保证 ,指定MyBaseClass 必须实现operator==

您的班级似乎没有实现此目标,因此编译失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM