Bonjour, je suis arrivé sur ce sous forum un peu par hasard, j'essayais de surcharger l'operateur: std::ostream& operator<<
---------------------------
La definition de l'operateur est la suivante: std::ostream& operator<<(std::ostream& sortie, const Machin& x){return x.affichage(sortie) << x.afficher(sortie);}
Les methodes affichage et afficher retournent toute les deux des ostream& (pas de soucis je pense de ce point de vu la).
------------------------------
J'ai été plutôt supris de voir dans un premier temps que le compilateur me disait:
error: no match for 'operator<<' (operand types are 'std::ostream {aka std::basic_ostream<char>}' and 'std::ostream {aka std::basic_ostream<char>}')|
Je me suis dis que c'etait bizzare qu'il me dise que deux choses identiques soient differentes.
Et puis dans un deuxième temps j'ai observe que j'avais egalement cette erreur la:
error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'|
Je me suis donc renseigne sur ce que pouvait être des l-value et r-value (je pense avoir brièvement compris) et j'ai ensuite vu que vous aviez ouvert ce forum. J'ai donc lu l'annexe que vous avez joint et essayé plusieurs des solutions proposées, mais j'ai toujours cette même erreur, ou bien d'autres erreurs en essayant d'utiliser &&.
J'aimerai bien comprendre ce qui conceptuellement ne fonctionne pas, car j'ai essayé avec des compilateurs plus ancien (98) qui ne me sortent pas cette erreur (conformément à ce qui est marqué dans l'annexe).
Merci beaucoup pour votre réponse.