2.6.1 Redéfinition de l'opérateur d'égalité ==

Testons si un Shadok est égal à un autre Shadok. Et là je doit vous prévenir :

Vous êtes obligés de redéfinir l'opérateur != si vous redéfinissez l'opérateur == et inversement.

De la même manière que pour les opérateurs propres à la classe, il faut les mettre publiques.

Mais je croyais qu'ils étaient extérieurs à la classe ?

Ils sont extérieurs à la classe, mais il faut les déclarer dedans (et ce n'est pas de ma faute).

Voici le prototype à mettre dans le fichier shadok.h :

1
friend bool operator == (const Shadok & shadok1, const Shadok & shadok2);

En fait, on va tester si les attributs de shadok1 sont égaux à ceux de shadok2.

Et voici l'implémentation (dans shadok.cpp) :

1
2
3
bool operator == (const Shadok & shadok1, const Shadok & shadok2){
	return (shadok1.p_nom == shadok2.p_nom && shadok1.p_age == shadok2.p_age && shadok1.p_type == shadok2.p_type);
}

Notez qu'il n'y a pas de Shadok::, car cet opérateur est ami, et il n'y a pas le mot clé friend dans le .cpp.

Et voilà, nous avons redéfinit l'opérateur d'égalité pour un Shadok.