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());
}
添加工作正常,但我的删除方法给出以下错误:
overload resolution selected deleted operator '=='
if (!(*__i == __value_))
~~~~ ^ ~~~~~~~~
我从这里拿起了矢量::擦除代码。我擦除项目的方式有什么问题?还有其他更好的按项目擦除的方法吗?
remove
在std::vector
上工作的ForwardIterator
要求的多通道保证指定MyBaseClass
必须实现operator==
。
您的类似乎没有实现这一点,因此编译失败。
相关文章:
- 为什么 std::make_shared 无法编译带有已删除运算符 new 的类型?
- 无效删除运算符语法
- C++:如果我重载新运算符,我是否也必须重载删除运算符?
- C++自定义删除运算符不能正常工作?
- 为什么我们甚至需要删除运算符?(我们不能只使用删除[]吗)
- 除了调用全局删除运算符之外,删除一个void指针还能做什么呢
- 在这里使用删除运算符是否正确,我很困惑
- 删除运算符
- 使用空实现重写删除运算符
- C ++(为什么)确实移动构造函数删除运算符=
- 如何在 C++ 中使用删除运算符删除单个数据
- 如何通过带有指向基类的指针的删除运算符释放内存
- 删除运算符如何在我的代码中工作
- C++ - 定义自定义新建和删除运算符时make_shared
- 将删除运算符放置在何处以进行动态变量
- C++删除运算符而不"new"
- 如何使用删除 [] 运算符清除动态分配的内存?(无法使用常规删除语法清除)
- 为什么删除运算符在const上下文中使用
- c++是否需要在用户定义和类特定的删除运算符中处理nullptr
- C++ 在覆盖新运算符和删除运算符时不释放数据