Surcharge à la fois opérateur et lt; et opérateur & gt; dans la même classe

Dans mes devoirs, je dois concevoir une classe de Message; entre autres attributs, il a l'attribut de "priorité" (objectif principal est de mettre en œuvre la priorité de la file d'attente).

Comme dans un conteneur je doit vérifier si un objet est plus grande que les autres, j'ai surchargé l'opérateur " >'. Maintenant, j'ai quelques questions d'ordre général à ce sujet...

Question:

En cas de surcharge de l'opérateur " >', dois-je la surcharge de l'opérateur "< " pour les arguments (const Message&, const Message&)?

Mon avis est que la surcharge à la fois > et < et de l'utiliser dans le code génère une erreur:

if(message1 > message2)
   { ... }

(Le code suivant appelle l'opérateur > pour message1 objet, ou de l'opérateur < message2 objet?)

Mais, si j'utilise l'opérateur comme ceci:

if(message1 < message2)
   { ... }

?

opérateur> est déclaré en tant qu'ami de la fonction:

friend bool operator>(const Message& m1, const Message& m2)

T-il besoin d'être déclarés en tant que membre de la fonction?

Merci.

source d'informationauteur Nemanja Boric