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