Salut à tous,
Mon problème aujourd'hui est que je n'arrive pas à comprendre pourquoi je ne peut pas utiliser l'operateur << avec un ostream alors qu'il est défini et qu'il marche avec std::cout.
Voici le code :
les classes Box et Frame sont tout ce qu'il y a de plus normal
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 ostream& Box::operator <<(ostream& os) { return os << x<< ","<< y<< ","<< width<< ","<< height<< endl; } ostream& Frame::operator<<(ostream& os) { os << "frame.id : "<< id<< endl; for (list<Box>::iterator it = boxes.begin(); it != boxes.end(); it ++) { Box box = (*it); os << box; // ERREUR à CETTE LIGNE (cf ci dessous) } os << endl; return os; }
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 class Box { public: Box(); int x, y; unsigned int width, height; std::ostream& operator<<(std::ostream&); }; class Frame { public: Frame(); unsigned int id; std::list<Box> boxes; std::ostream& operator <<(std::ostream& os); };
le message d'erreur est
et si j'essaye de les afficher avec std::cout, ca marche très bien. Ca coince juste avec ce ofstream
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 In member function «std::ostream& Frame::operator<<(std::ostream&) erreur: no match for «operator<<" in «os << b"![]()
edit: ca marchait pas avec les cout en fait, j'avais pas du faire le clean
Une idée ?
ps: c'est dur le c++
Partager