【发布时间】:2017-02-21 19:37:27
【问题描述】:
我正在尝试从向量中删除特定元素,但是当我使用擦除(删除)函数时,我收到此错误:
[...]/v1/algorithm:2139:24: 二进制表达式的操作数无效('Component' 和 'const Component')
我搜索了一个解决方案,在类内和类外定义了 == 运算符,但我找不到它为什么不起作用。
代码如下:
void OGWindow::deleteSquare( Component *squPtr )
{
cout << "Deleting component " << squPtr->getIndex() << endl;
compVector.erase(std::remove(compVector.begin(), compVector.end(), *squPtr), compVector.end());
}
运算符 == :
bool Component::operator==(Component& c){
return this->getIndex() == c.getIndex();
}
分量索引与向量无关。
谢谢。
编辑:此运算符重载有效:
bool Component::operator==(const Component& c) const{
return this->index == c.index;
}
【问题讨论】:
-
compVector的定义是什么? -
@Ap31 std::vector compVector;当我注释掉擦除行时,它会编译并且 cout 会打印出好的值。