我已经在函数中对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);
另外,请注意,
l
在const
内是mergeWithoutDuplicates
,但是您将其传递给sortPlaylist
,它需要非const
引用。那也是错的。关于c++ - 在C++中使用排序谓词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12562329/