[英]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
上运行remove
的ForwardIterator
要求的多 ForwardIterator
保证 ,指定MyBaseClass
必须实现operator==
。
您的班级似乎没有实现此目标,因此编译失败。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.