(résolu) surcharge operateur <<

surcharge operateur << (résolu) - C++ - Programmation

Marsh Posté le 06-12-2005 à 19:57:00    

Bonsoir.
J'ai 2 classes, Adresse et Personne. Parmi les membres de Personne, j'ai une Adresse :
 

Code :
  1. class Personne {
  2.   private:
  3.     string nom;
  4.     string prenom;
  5.     Adresse adr;
  6.    /* ... */
  7. };


 
Je surcharge l'opérateur << dans la classe Adresse, aucun problème à ce niveau.
Mais lorsque je veux le surcharge dans la classe Personne, tous les attributs s'affichent sauf l'adresse justement.
 

Code :
  1. ostream& operator<<(ostream& os, const Personne& p)
  2. {
  3.   os << p.nom << ' ' << p.prenom << '\n'
  4.        << p.adr;
  5.   return os;


 
quand je fais

Code :
  1. cout << p << endl;


 
(où p est Personne) j'ai le nom, le prenom, et un blanc à la place de l'adresse.


Message édité par juju286 le 07-12-2005 à 12:54:22
Reply

Marsh Posté le 06-12-2005 à 19:57:00   

Reply

Marsh Posté le 06-12-2005 à 21:12:06    

Code :
  1. #ifndef _ADRESSE_H
  2. #define _ADRESSE_H
  3. #include <string>
  4. #include <iostream>
  5. using namespace std;
  6. class Adresse {
  7. private:
  8.   string rue;
  9.   int code_postal;
  10.   string ville;
  11. public:
  12. /* ... */
  13. friend ostream& operator<<(ostream&, const Adresse& );
  14. };
  15. #endif


 

Code :
  1. ostream& operator<<(ostream& os, const Adresse& a)
  2. {
  3.   os << a.rue << '\n' << a.code_postal << ' ' << a.ville;
  4.   return os;
  5. }


 
et voila la classe Personne, avec l'opérateur << :

Code :
  1. #ifndef _PERSONNE_H
  2. #define _PERSONNE_H
  3. #include "adresse.h"
  4. #include <string>
  5. #include <iostream>
  6. using namespace std;
  7. class Personne {
  8. private:
  9.   string nom;
  10.   string prenom;
  11.   Adresse adr;
  12. public:
  13. /* ...*/
  14.   friend ostream& operator<<(ostream&, const Personne& );
  15. };
  16. #endif


l'opérateur << :

Code :
  1. ostream& operator<<(ostream& os, const Personne& p)
  2. {
  3.   os << p.nom << ' ' << p.prenom << '\n'
  4.        << p.adr;
  5.   return os;
  6. }


Reply

Marsh Posté le 07-12-2005 à 09:47:01    

PAS DE FRIEND PUTAIN !

Reply

Marsh Posté le 07-12-2005 à 10:53:45    

ah oui c'était ca merci de ta réponse

Reply

Marsh Posté le 07-12-2005 à 11:22:29    

pour l'instant j'utilise friend, c'est comme ca, et quand j'aurais avancé j'utiliserais une meilleure méthode. Mais pour l'instant j'en suis là et j'aimerais bien qu'on m'aide. merci

Reply

Marsh Posté le 07-12-2005 à 11:58:42    

Taz a écrit :

PAS DE FRIEND PUTAIN !


Citation :

bisounours-codeur


[:mlc]
 
Ceci dit le topic est intéressant [:ocube]
J'attends moi aussi la réponse.

Reply

Marsh Posté le 07-12-2005 à 12:53:08    

faute de frappe dans un constructeur de adresse...  :whistle:  

Reply

Sujets relatifs:

Leave a Replay

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