Il faut se souvenir que les fonctions définies dans le corps de la classe sont "inline", ce qui n'est pas génial quand elles sont trop longues...
Et les opérateurs membres de la classe ont un premier argument implicitement du type exact de la classe, donc ça ne marche pas pour cout<<obj.
Ne pas oublier de recevoir des références const si on ne modifies pas l'objet.
CNoeud.hpp
Code :
- class CNoeud
- {
- //...
- friend ostream& operator<<(ostream& flux, const CNoeud& obj);
- friend istream& CNoeud::operator >>(istream& flux, CNoeud& obj)
- public :
- CNoeud(){};
- ~CNoeud(){};
- };
|
CNoeud.cpp
Code :
- #include "CNoeud.hpp"
- ostream& CNoeud::operator<<(ostream& flux, const CNoeud& obj)
- {
- //...
- return flux;
- }
- istream& CNoeud::operator >>(istream& flux, CNoeud& obj)
- {
- //...
- return flux;
- }
|
Ce genre de comparaisons est dangereuse:
Code :
- obj.etat_civil=="marie"
|
Il vaudrait mieux stocker une énumération, ou des références sur un ensemble de "string" prédéfinies.
Il me semble que le membre "it" n'a rien à faire dans la classe.
Par contre, un typedef oui:
Code :
- typedef multimap<string,CNoeud>::iterator enfants_itor;
|
---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone