我在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代码。 我擦除项目的方式有什么问题?还有其他更好的方法可以逐项删除吗?
答案 0 :(得分:2)
ForwardIterator
remove
要求std::vector
处理MyBaseClass
的多通保证指定operator==
必须实施{{1}}。
您的类似乎没有实现这一点,因此编译失败。