在C ++中使用排序谓词

时间:2012-09-24 09:34:12

标签: c++ comparison predicate

我在函数中实现了struct 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-call:

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

我在函数调用/错误中缺少什么?非常感谢。

1 个答案:

答案 0 :(得分:1)

sortingPredicate<Track>()

是一个函数调用,你不是将它作为回调传递。它应该是:

sortPlaylist(l, sortingPredicate);

另请注意,lconstmergeWithoutDuplicates,但您要将其传递给sortPlaylist,而const需要非{{1}}引用。那也是错的。