«Нет соответствия для operator>» при использовании приоритетной очереди в C

#c #struct #operator-overloading #priority-queue

#c #struct #оператор-перегрузка #приоритетная очередь

Вопрос:

 #include<bits/stdc  .h>
using namespace std;

struct vert
{
    int n,m;
    vert(int Node1=0,int Node2=0)
    {
        n=Node1,m=Node2;
    }
    bool operator<(vert const amp;obj)
    {
            return m<obj.m;
    }
};

int main()
{
    priority_queue<vert> q;
    q.push(vert(1,2));
}
  

когда я запускаю этот код, я получаю следующую ошибку error: no match for 'operator<' (operand types are 'const vert' and 'const vert') , я даже объявляю, что < делает оператор, но он все равно не работает, как мне это исправить?

Комментарии:

1. Вы не должны включать этот заголовок или что-либо в «bits /», поскольку это нестандартно и является внутренним для конкретной реализации. Вы должны включить реальный заголовок c , <очередь>

Ответ №1:

Как говорится в сообщении об ошибке, используйте const .

Попробуйте это

 bool operator<(vert const amp;obj) const