Как я могу определить Operator == при сравнении векторов классов? - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу использовать поиск fonction, чтобы найти элемент в векторе структуры (с атрибутами x и y),

Но я получаю ошибку без оператора сопоставления ==.Я попытался переопределить его, но я все еще получаю то же сообщение об ошибке:

Ошибка: нет соответствия для «operator ==» (типы операндов: «const coordenates» и «const coordenates»){return * __ 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 голосов
/ 08 февраля 2019

Передается как const coordinates, поэтому ваш operator== также должен быть помечен const, чтобы соответствовать:

bool operator ==(const coordenates &a) const
...