Por que a função sort () causa erro de compilação quando é usada para um conjunto de objetos de classe

Eu tentei sobrecarregar< operador para classe e chamou a função da seguinte forma:

bool Edge::operator<(Edge const & e) const {
    return this->GetCost() < e.GetCost();
}

em main ()

sort(edge_set.begin(),edge_set.end());

Além disso, eu também tentei escrever uma função de comparação simples para os objetos, definida no main.cpp e tentei invocarsort()no entanto falhou novamente:

bool edge_comparator(Edge& e1, Edge& e2){
    return (e1.GetCost() < e2.GetCost());
}

em main ()

sort(edge_set.begin(),edge_set.end(), edge_comparator);

Eu recebo um erro de compilação para aqueles que eu tentei. O que eu estou fazendo errado aqui? Como posso classificar o conjunto de objetos?

questionAnswers(2)

yourAnswerToTheQuestion