friend operator

friend operator - C++ - Programmation

Marsh Posté le 14-03-2010 à 16:42:12    

Code :
  1. template<typename T> class equal_comparable
  2. {
  3.     bool operator==(T const &a, T const &b) { return  a.equal_to(b); }
  4.     friend bool operator!=(T const &a, T const &b) { return !a.equal_to(b); }
  5. };
  6. class value_type : private equal_comparable<value_type>
  7. {
  8.   int a;
  9.   public:
  10.     bool equal_to(value_type const& rhs) const
  11. {
  12.  return a == rhs.a;
  13. }
  14. };


 
pourquoi est il obligatoire de défnir les operator de classe de base friend ? sans quoi le code ne compile pas


---------------
.
Reply

Marsh Posté le 14-03-2010 à 16:42:12   

Reply

Marsh Posté le 14-03-2010 à 17:53:09    

la questione st, encore, pourquoi mettre ces operateurs symmetriques dnas la calsse et non en fonction libre :o

Reply

Marsh Posté le 14-03-2010 à 19:02:06    

C'est pour ça que friend est nécessaire, parce que ça change un membre en fonction libre et que bien que la déclaration soit dans la classe il utilise le prototype nécessaire en fonction libre.  Sortir de la classe rendrait aussi la définition valable.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 14-03-2010 à 21:23:04    

je réitére ma question. Quel interet d'avoir operator== dans la classe au depart ?
 
Le code du PO est une JAVAterie qui, en C++, se regle via un concept.

Reply

Marsh Posté le 14-03-2010 à 21:41:50    

Joel F a écrit :

je réitére ma question. Quel interet d'avoir operator== dans la classe au depart ?
 .


j'en vois pas a priori


---------------
.
Reply

Marsh Posté le 14-03-2010 à 21:46:35    

donc on fait pas :o

Reply

Marsh Posté le 14-03-2010 à 22:34:07    

le fait de mettre friend ça mets l'operator == dans le scope global ou pas ? c'est ce qu'à voulu dire le programmeur ?
si non, on peut peut être trouver des cas ou l'on ne souhaite pas pouvoir comparer deux types de type T autrement qu'avec equal_to


Message édité par Glock 17Pro le 14-03-2010 à 22:42:23

---------------
.
Reply

Marsh Posté le 15-03-2010 à 07:52:09    

[quotemsg=1973764,7,732710]le fait de mettre friend ça mets l'operator == dans le scope global ou pas ?[quotemsg]
 
Oui.  (Avec quelques petites particularités sur la recherche des noms, mais passons).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed