Я пытаюсь сделать очередь приоритетов, в верхней части которой содержится наименьшее целое число. Я сделал объект функции для сравнения. Все идет хорошо, но всякий раз, когда я пытаюсь напечатать верхний элемент наиболее std::cout<<pq.top<<std::endl
я получаю ошибку, которая говорит:Функция кандидата на программирование на языке С ++ не является жизнеспособной
candidate function not viable: no known conversion from 'const value_type' (aka 'const Foo') to
'const void *' for 1st argument; take the address of the argument with &
basic_ostream& operator<<(const void* __p);
Я действительно новичок в программировании так, я действительно не знаю, что делать.
#include<iostream>
#include<queue>
#include <vector>
class Foo
{
public:
int data;
Foo(int data): data(data) {}
};
class Compare
{
public:
int operator() (Foo dat1, Foo dat2)
{
if(dat1.data < dat2.data)
return dat1.data;
else return dat2.data;
}
};
int main()
{
std::priority_queue<Foo, std::vector<Foo>, Compare> pq;
pq.push(5);
pq.push(7);
pq.push(1);
pq.push(2);
pq.push(3);
std::cout << pq.top() << std::endl;
return 0;
}
Вы, кажется, пропустили конец своего предложения «но когда я пытаюсь ...:« Что происходит потом? В чем проблема? –