У меня есть вектор объектов Student, которые я хочу отсортировать, используя #include <algorithm>
и sort(list.begin(), list.end());
Чтобы сделать это, я понимаю, что мне нужно перегрузить оператор "<", но после попытки (и сбоя) несколькими методами, предложенными в сети, у меня заканчиваются идеи. </p>
Вот моя последняя попытка:
В Student.h ...
...
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
, я получил сообщение «ошибка: перегруженный оператор не найден»
Как правильно перегрузить этот оператор, чтобы сортировка работала так, как я намереваюсь?