Surcharge de l'opérateur <<

kenjimax Messages postés 82 Date d'inscription dimanche 3 août 2003 Statut Membre Dernière intervention 10 août 2007 - 29 mai 2005 à 13:00
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 - 29 mai 2005 à 13:19
Bonjour à tous,



Je rencontre un petit probleme avec la surcharge de l'opérateur
<<. Dans une classe mere, je veux afficher les caractéristiques
d'un objet (taille, position) sur la sortie courante (la console en
l'ocurrence), je fais donc :

friend ofstream operator << (ofstream &out, SINA_Chose &chose); //SINA_Chose est une classe



Mais mon probleme vient du fait que la fonction ne peut pas etre
déclarée virtual... la classe SINA_Chose etant destinée à etre dérivée,
c'est cette fonction qui sera toujours appelée, je ne pourrais donc pas
la redéfinir. En partant du fait que tous mes pointeurs seront des
SINA_Chose que j'initialiserai en un objet de d'une classe héritée...



Je sais pas si je suis super clair :D

Merci de m'avoir lu deja :)

1 réponse

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
29 mai 2005 à 13:19
Oui c'est pas très clair, mais je devine :)

Il me semble que la solution c'est de déclarer une fonction virtuel qui
retourne un std::string, ou autre chose du genre. Une fonction que tu
redéfinis dans chaque class dérivée comme tu le souhaites. Dans ta
classe de base, tu définiras la surcharge ainsi:



class TA_CLASS_DERIVEE

{

...

std::string la_fonction_qui_retourne_la_chaine() const;

...

}



std::ostream & operator << (std::ostream & _chaine, const SINA_Chose & _which)

{

return _chaine << _which.la_fonction_qui_retourne_la_chaine();

}



++
0
Rejoignez-nous