Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2613 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  surchage << , obligatoirement non membre ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

surchage << , obligatoirement non membre ?

n°1837634
frenchtouc​co
Posté le 13-01-2009 à 23:19:29  profilanswer
 

On ne peut pas déclarer la surcharge de << membre de la classe, c'est obligatoirement friend?
 

Code :
  1. #include <iostream>
  2. #include <string>
  3. class M
  4. {
  5.     friend std::ostream& operator <<(std::ostream&, const M& );
  6. private :
  7.     int I;
  8. };
  9. std::ostream& operator <<(std::ostream& Stream, const M& Obj)
  10. {
  11.     Stream << Obj.I;
  12.     return Stream;
  13. }
  14. M Obj;
  15. std::cout << Obj << std::endl;


 
en faite je comprends pas comment cout.operator <<(M &o) réussit à appeler la bonne fonction....


Message édité par frenchtoucco le 13-01-2009 à 23:21:05

---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
mood
Publicité
Posté le 13-01-2009 à 23:19:29  profilanswer
 

n°1837658
Taz
bisounours-codeur
Posté le 14-01-2009 à 00:49:34  profilanswer
 

C'est la magie du Koenig Lookup (argument-dependant lookup).
 
Ca n'est pas obligatoirement friend, il suffit d'avoir par exemple une fonction membre void print(ostream& ) const, et à ce moment là, la fonction libre << devient triviale à écrire.

n°1837665
frenchtouc​co
Posté le 14-01-2009 à 01:21:19  profilanswer
 

a ok, il suffit juste que  
 
d::ostream& operator <<(std::ostream& Stream, const M& Obj)
{
    Stream << Obj.I;
    return Stream;
}
 
soit définit dans le même namespace que l'argument et ça marche.
 
D'aileurs dans le cas d'un programme bateau : un main, une classe et la fonction << adéquate, ces 3 parties sont définies dans quel namespace, ça porte un nom ?


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1837748
Taz
bisounours-codeur
Posté le 14-01-2009 à 11:37:46  profilanswer
 

C'est la portée globale, ::

n°1837900
Joel F
Real men use unique_ptr
Posté le 14-01-2009 à 16:12:48  profilanswer
 

en général, il est pas friend et il appelle un methode pritn ou approchant pr des histoires de virtualités


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  surchage << , obligatoirement non membre ?

 

Sujets relatifs
classe template avec pointeur membre sur la classemembre de groupe AD
afficher membre connecté avec une image persoErreurs dans mon constructeur ou ma fonction membre
Comment afficher les résultats uniquement du membre connecté?case à cocher obligatoirement pour accéder aux site...
Wordpress + fiche identité membreProbleme création nouveau membre
Plus de sujets relatifs à : surchage << , obligatoirement non membre ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR