比较类向量时如何定义运算符==?

时间:2019-02-08 12:14:48

标签: c++ iterator operator-keyword

我想使用功能查找来在struct向量(带有属性x和y)中查找元素,

但是我遇到了没有匹配运算符==的错误。我试图重新定义它,但仍然收到相同的错误消息:

  

错误:与“ operator ==”不匹配(操作数类型为«const coordenates»和«const coordenates»){返回* __ it == _M_value; }

struct coordenates {
int x;
int y;

bool operator ==(const coordenates &a){
    if (x == a.x && y == a.y)
        {return true;}
    return false;
}

 bool findInVector(const std::vector<coordenates> &vecOfElements, const int &i, const int &j)
{
    bool presence;
    coordenates element;
    element.x = i;
    element.y = j;

if(std::find(vecOfElements.begin(), vecOfElements.end(), element) == vecOfElements.end()) {
    presence = false;}
else{presence = true;}
    return presence;
}

1 个答案:

答案 0 :(得分:4)

它作为const coordinates传递,因此您的operator==也必须标记为const才能匹配:

bool operator ==(const coordenates &a) const