0

我在函数中实现了 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 ‘&gt;’ token
error: expected primary-expression before ‘)’ token"

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

4

1 回答 1

1
sortingPredicate<Track>()

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

sortPlaylist(l, sortingPredicate);

另外,请注意lconstinside mergeWithoutDuplicates,但您将它传递给sortPlaylist期望非const引用。这也是错误的。

于 2012-09-24T09:37:40.793 回答