Bonjour tout le monde.
J'ai denouveau un prob de surcharge, mais cette fois-ci avec les opérateurs << et >>.
En résumé, je dois encoder un mail et savoir le relir. A la place de faire des tas de cin et des tas de cout dans mes fonctions d'encodage et d'affichage, je dois faire appels aux surcharges de << et >>.
Alors, on commence dans mon header :
bien placé au-dessus de tout de ma classe message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 friend ostream& operator<< (ostream& msgs, const message& m); friend istream& operator>> (istream& msgs, message& m);
Ma fonction d'affichage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 class message { friend ostream& operator<< (ostream& msgs, const message& m); friend istream& operator>> (istream& msgs, message& m); private: static int cpt_id_message; // compteur nombr id déjà utilisé int num_id_message; // num id du message std::string adresse_expediteur; std::string adresse_destinataire; bool urgent; bool mess_lu; std::string sujet; std::string texte; public: message (void); // constructeur par défaut message (std::string& ad_dest) {setDestinataire(ad_dest);} message (const message & mess); // constructeur de copie message (int num, std::string& ad_exp, std::string& ad_dest, bool urg, bool msg_lu, std::string& sjt, std::string& txt); message operator+ (const std::string& ad_dest) const; // surcharge de l'opérateur + void affMessage (void); // afficher le message void encMessage (void); // entrer le message void checkFormatMsg (std::string& tmpEnc); // vérifie la présence d'un " @ " void setExpediteur (const std::string& tmpEnc) { adresse_expediteur = tmpEnc; } void setDestinataire (const std::string& tmpEnc) { adresse_destinataire = tmpEnc; } const std::string& getDestinataire (void) { return adresse_destinataire; } };
qui est appellée par çà:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 ostream& operator <<(ostream& msgs, const message& m) { msgs << "ID message : " << m.num_id_message << endl << "Expediteur : " << m.adresse_expediteur << endl << "Destinataire(s) : " << m.adresse_destinataire << endl << "Urgent : " << m.urgent << endl << "Lu : " << m.mess_lu << endl << "Sujet : " << m.sujet << endl << "Texte : " << m.texte << endl; return msgs; }
Ma fonction d'encodage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 message affMessage; cout << affMessage << endl;
qui est appellé par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 istream& operator >> (istream& msgs, message& m) { ...// Où j'ai pris soin de faire précéder tous les encodages d'un "m." return msgs; };
Voilà... j'arrive à encoder... lorsque je fais des cout de chaque variables, y a qlq chose dedans, cependant, lorsque je fais un cout << msgs;, bah çà affiche rien hormis le contenu du constructeur par défaut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 message affMessage; cin >> affMessage;
Et encore une fois, durdur de trouver de la doc bien faite sur la surcharge de << et >>. Quelqu'un veut bien faire un tuto complet sur çà Cà serait apprécié par beaucoup de monde
Partager