cs_obby
Messages postés91Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention12 octobre 2006
-
20 mars 2006 à 22:35
cs_obby
Messages postés91Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention12 octobre 2006
-
21 mars 2006 à 23:28
Salut à tous,
j'ai un problème, en fait je fais du polymorphisme mais la classe
"mère" n'est pas la classe de plus haut niveau et du coup je n'arrive
pas à surcharger l'opérateur =, je passe forcement dans celui de la classe CFenetre (qui est une classe virtuel pure)
CFenetre : public Gtk::Widget
CFenetre2D : virtual public CFenetre, virtual public Gtk::Widget
mathusale_ftl
Messages postés36Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention18 août 2006 21 mars 2006 à 00:36
Salut,
Petit question : Pourquoi CFenetre2D hérite de Gtk::Widget, ce n'est pas nécessaire.
Bref, ce n'est qu'un détail.
Comme la classe CFenetre est une classe Abstraite, je pense que tu dois utiliser le mot clé virtual devant la méthode pour indiqué lors de l'éxécution que c'est cette méthode que tu souhaite utiliser.
Exemple :
Dans la classe de base : virtual void CFenetre::operator(const CFenetre &fenetre) 0;
cs_obby
Messages postés91Date d'inscriptionvendredi 10 octobre 2003StatutMembreDernière intervention12 octobre 2006 21 mars 2006 à 08:10
Le problème c'est que l'opérateur = des classes dérivé a un prototype qui est différent => c'est donc une méthode différente.... Je vais malgré tout essayer de voir en mettant l'opérateur = en virtuel pure
mathusale_ftl
Messages postés36Date d'inscriptionvendredi 22 juillet 2005StatutMembreDernière intervention18 août 2006 21 mars 2006 à 12:13
Mais normalement si tu met le mot clé virtual, il devrait exécuter la
méthode de la classe appelante. Le fait de le mettre en virual pure ne
changera rien je pense...
Sinon tu peux essayé ceci
virtual void operator=(....) override //surcharge de la méthode