Похоже, вы смешали std::sort
алгоритм с list<T>::sort
методом.Список можно отсортировать только с помощью метода sort
.
Существует две перегрузки list::sort
:
void sort();
template< class Compare >
void sort( Compare comp ); // [2]
, если вы хотите отсортировать по компаратору, напишите следующее:
list<Student*> list;
list.sort (funct);
, поскольку в списке хранятся указатели на Student
, необходимо изменить сигнатуру функции-функции, она должна принимать указатели, а не ссылки:
bool funct(Student* s1,Student* s2)
{
return s1->calculMedie()<s2->calculMedie();
}
хорошей практикой является передача s1, s2как указатели на const объект, когда вы изменяете s1, s2 на const Student* s1, const Student* s2
, вам также нужно сделать calculMedie
как const функцию-члена.