-1
Я определил класс, а затем сохранил указатель на Foo в priority_queue и использовал функцию cmp, которую я определил.различия между функциональным объектом и указателем функции?
но если КСС-Funtion вызывает функцию-объект, возникает ошибка:
class Foo
{
friend bool cmp(Foo *, Foo *);
public:
Foo() = default;
Foo(int x):val(x) {}
private:
int val;
};
bool cmp(Foo *a, Foo *b)
{
return a->val < b->val;
}
int main()
{
priority_queue<Foo*, vector<Foo*>, decltype(cmp)*> que;
que.push(new Foo(5));
que.push(new Foo(6));
return 0;
}
functione-объект работает в обычном режиме.
class Foo
{
friend struct cmp;
public:
Foo() = default;
Foo(int x):val(x) {}
private:
int val;
};
struct cmp
{
bool operator()(Foo *a, Foo *b)
{
return a->val < b->val;
}
};
int main()
{
priority_queue<Foo*, vector<Foo*>, cmp> que;
que.push(new Foo(5));
que.push(new Foo(6));
return 0;
}
IDE является кодом :: blocks – Wonter
"возникает ошибка"? В самом деле? –
не компилировать ошибку – Wonter