Я пытаюсь перегрузить оператор '<', чтобы я мог использовать std :: map в проекте. Прототип в определении класса выглядит следующим образом: bool operator<(const Vertex&);
, а тело функции выглядит следующим образом:Ошибка при перегрузке оператора '<' для карты
bool Vertex::operator <(const Vertex& other){
//incomplete, just a placeholder for now
if(px != other.px){
return px < other.px;
}
return false;
}
и ошибка я получаю это: /usr/include/c++/4.7/bits/stl_function.h:237:22: error: passing ‘const Vertex’ as ‘this’ argument of ‘const bool Vertex::operator<(Vertex)’ discards qualifiers [-fpermissive]
Проверка неравенство не должно иметь значение, так как 'рх
chris
Функция не является полной, если px одинаковы, я перехожу к следующей переменной-члену, чтобы определить разницу. – AdamSpurgin
Я не мог удержаться, чтобы указать на это, если бы это было не так. В любом случае, теперь, когда вы сказали это, вы должны просто использовать что-то вроде 'std :: make_pair' или' std :: tie', чтобы сгруппировать эти два фактора вместе (например, 'std :: make_pair (px, py)
chris