В моей домашней работе мне нужно создать класс Message; среди других атрибутов он имеет атрибут "приоритет" (основная цель - реализовать очередь приоритетов).
Как и в контейнере, я должен проверить, больше ли один объект, чем другой, я перегрузил оператор ' > '. Теперь у меня есть несколько общих вопросов об этом...
Вопрос один:
Если я перегружаю оператор ' > ', я должен перегрузить оператор '<' для аргументов (const Message &, const Message &)?
Мое мнение таково, что перегрузка и > и < и использование его в коде вызовет ошибку:
if(message1 > message2)
{ ... }
(Является ли следующий код вызовом operator > для объекта message1 или объекта operator < message2?)
Но что, если я использую оператор следующим образом:
if(message1 < message2)
{ ... }
?
Операторобъявляется как функция друга:
friend bool operator>(const Message& m1, const Message& m2)
Нужно ли его объявлять как функцию-член?
Спасибо.