我在函数中实现了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"
我在函数调用/错误中缺少什么?非常感谢。
答案 0 :(得分:1)
sortingPredicate<Track>()
是一个函数调用,你不是将它作为回调传递。它应该是:
sortPlaylist(l, sortingPredicate);
另请注意,l
内const
为mergeWithoutDuplicates
,但您要将其传递给sortPlaylist
,而const
需要非{{1}}引用。那也是错的。