У меня есть вектор объектов Student, которые я хочу отсортировать, используя #include <algorithm>
и sort(list.begin(), list.end());
Я понимаю, что для этого мне нужно перегрузить оператор «‹», но после попытки (и неудачи) нескольких методов, предложенных в Интернете, у меня заканчиваются идеи.
Вот моя последняя попытка:
В Студент.ч...
...
using namespace std;
class Student
{
friend bool operator <(const Student& first, const Student& second);
public:
...
private:
...
};
А в Student.cpp...
...
#include "Student.h"
using namespace std;
...
bool operator <(const Student& first, const Student& second)
{
return first.Name() < second.Name();
}
где «Name()» — это константная функция, возвращающая строку.
Программа компилируется и запускается, но моя функция оператора никогда не вызывается во время сортировки, и когда я попытался сравнить два объекта Student, таких как s1 < s2
, я получил «ошибка: перегруженный оператор не найден»
Как правильно перегрузить этот оператор, чтобы моя сортировка работала так, как я задумал?