сравнение — Использование предикатов сортировки в переполнении стека

Я реализовал сравнение для структуры Track в функции:

bool sortingPredicate(const Track& l, const Track& r)

тогда у меня есть функция:

void sortPlaylist(std::list<Track>& playlist, bool (*predicate)(const Track& l, const Track& r)) {
playlist.sort(predicate);
}

И я попробовал:

std::list<Track> mergeWithoutDuplicates(const std::list<Track>& l, const std::list<Track>& r) {
sortPlaylist(l, sortingPredicate<Track>());
...
}

И я получаю для вызова sortPlaylist:

error: expected primary-expression before ‘>’ token
error: expected primary-expression before ‘)’ token"

Что я упускаю в вызове функции / делаю неправильно? Большое спасибо.

0

Решение

sortingPredicate<Track>()

это вызов функции, вы не передаете его как обратный вызов. Так должно быть:

sortPlaylist(l, sortingPredicate);

также обратите внимание, что l является const внутри mergeWithoutDuplicates, но вы передаете это sortPlaylist который ожидает неconst ссылка. Это тоже неправильно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]