C ++のcompareメソッドを使用してオブジェクトを並べ替えようとすると、非常に奇妙なエラーが発生します
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*)]'
標準エラーではないようですが、コードに問題はありません。それはcompareメソッドの問題ですか、それともソート自体の問題ですか。どんな助けでも大歓迎です。
関連するコードを添付しました:
Album.cpp: http: //pastebin.com/0tNrbdrT
Album.h: http: //pastebin.com/iY2Yy7qM
AlbumCollection.cpp: http: //pastebin.com/gWj0nS8S
AlbumCollection.h: http: //pastebin.com/bFrxme5n
AlbumCollectionソート:
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++はまったく初めてです。