STD type et polymorphisme. - C++ - Programmation
Marsh Posté le 12-11-2008 à 15:36:30
solution facile:
class Base { public: virtual void print(std::ostream& ) const; };
std::ostream& operator<<(std::ostream& os, const Base& b) { b.print(os); return os; }
Marsh Posté le 12-11-2008 à 15:37:29
Et ce qui se passe est normal, il n'y a pas de multiméthodes en C++, c'est donc par rapport au type statique des arguments de ce opérateur que la résolution se fait.
Marsh Posté le 12-11-2008 à 15:38:35
fais toi un:
virtual ostream &stream_out( ostream & )
et l'operator << qui utilise stream_out (et qui donc devrait utiliser celui de l'héritier)
edit: burned par taz
Marsh Posté le 12-11-2008 à 15:12:37
Re-bonjour,
un nouveau souci...
J'ai crée un set qui contient des poiinteur sur Client.
A present je le remplis à partir d'une classe template avec un pointeur
sur un objet de type descendant (heritier) de Client, mais jamais un client.
A present je souhaite utiliser les operateur<< redefinis dans chaque classe
(client et filles). Mais chaque appel à cet operateur sur l'objet pointé par le set,
c'est la methode de client qui est utilisée.
Comme on ne peut definir une methode friend virtuel et que meme ca ne servirait à rien
ici puisque le type de l'argument de droite de l'operateur passerait de client à descendant
suivant les cas, je ne vois pas comment solutionner ce probleme.
Ne devrait-il pas y avoir unappel à l'operateur du descedant??