я пытаюсь отсортировать список указателей (в моем случае каждый указатель имеет тип Job)
Мое намерение состоит в том, чтобы отсортировать работы по их серийному номеру
void Container::jobSort(list<Job*> &jobs) {
sort(jobs.begin(), jobs.end(), jobSerialCompare);
}
bool Container::jobSerialCompare(const Job *jobA,const Job *jobB) {
return (jobA->getSn()<jobB->getSn());
}
ошибка, которую я получаю:
error: no matching function for call to 'sort(std::_List_iterator<Job*>, std::_List_iterator<Job*>, <unresolved overloaded function type>)'
/usr/include/c++/4.2.1/bits/stl_algo.h:2852: note: candidates are: void std::sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::_List_iterator<Job*>, _Compare = bool (Container::*)(const Job*, const Job*)]
make: *** [src/Container.o] Error 1
Мне удалось устранить ошибку, изменив код следующим образом:
struct compare {
bool operator()(const Job *jobA, const Job *jobB) { return (jobA->getSn()<jobB->getSn());
}
};
void Container::jobSort(list<Job*> &jobs) {
jobs.sort(compare());
}
сейчас нет ошибки компиляции, но мне интересно, что не так с моими начальными шагами,
помощь приветствуется,
веселит
РЕДАКТИРОВАТЬ -
Большое спасибо за помощь всем!
все разные ответы помогли нарисовать более четкую картину