Démasquage opérateur

Démasquage opérateur

par Eliot Bornand,
Number of replies: 1


Bonjour,

J'avais une question au sujet du démasquage de l’opérateur<<, un sujet qui a déjà été abordé dans une autre discussion, mais je trouve dans la même situation.

J'aimerai spécifiée l'affichage des différentes sous-classes de Toupie, et pour cela, créer une fonction virtuelle affiche() que substitué dans chaque sous-classe, à laquelle fait appel l'operator <<.

Mon problème est que le polymorphisme ne fonctionne pas car, dans ma fonction operator<<, la toupie ne peut pas être prise par référence (du moins ça ne compile pas) de cette manière :

ostream& operator<<(ostream& sortie, Toupie const& toupie);

Je suis alors obligé de faire un passage par valeur, et donc même si j'utilise par exemple une fonction interne affiche(), elle fera toujours appel à la méthode général de Toupie et non pas à ses spécialisations dans les sous-classes.

Comment puis-je faire ?

Merci


In reply to Eliot Bornand

Re: Démasquage opérateur

par Fares Ahmed,

Est-ce que vosu pourriez fournir l'erreur de compilation qui apparait quand vous essayez de compiler avec le passage par référence ?

A mon avis, l'erreur vient d'un des trois cas suivants :

  • L'opérateur est défini comme prenant un argument par valeur dans le .h et vous oubliez de corriger ça avant de compiler,
  • la méthode affiche() n'est pas définie comme const et du coup ne peux pas être appelée sur un objet non-const,
  • vous avez des anciens fichiers (*.h.gch ou *.o) qui trainent avec les anciennes définitions/déclarations (dans ce cas là : supprimez les et relancer make)