我已经在函数中对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调用:

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


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

最佳答案

sortingPredicate<Track>()


是一个函数调用,您没有将其作为回调传递。它应该是:

sortPlaylist(l, sortingPredicate);


另外,请注意,lconst内是mergeWithoutDuplicates,但是您将其传递给sortPlaylist,它需要非const引用。那也是错的。

关于c++ - 在C++中使用排序谓词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12562329/

10-11 22:25