当我尝试使用 C++ 中的比较方法对对象进行排序时,我遇到了一个非常奇怪的错误
required from 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Album*, std::vector<Album> >; _Compare = bool (*)(const Album*, const Album*)]'
这似乎不是标准错误,但我看不出我的代码有什么问题。是比较方法的问题,还是排序本身的问题。任何帮助将不胜感激。
我附上了相关代码:
专辑.cpp: http ://pastebin.com/0tNrbdrT
专辑.h: http ://pastebin.com/iY2Yy7qM
AlbumCollection.cpp:http ://pastebin.com/gWj0nS8S
AlbumCollection.h:http ://pastebin.com/bFrxme5n
专辑收藏排序:
void AlbumCollection::sortAlbums(){
std::sort(albums.begin(), albums.end(), compareAlbums);
}
专辑比较方法:
bool Album::compareAlbums(const Album* a1,const Album* a2)
{
if (a1->getArtist() == a2->getArtist()){
return (a1->getTitle() < a2->getTitle());
}else{
return a1->getArtist() < a2->getArtist()
}
}
错误是: http: //pastebin.com/PeXk0FUT
我不确定有多少是相关的,我对 C++ 很陌生