Pb de polymorphisme

Signaler
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006
-
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006
-
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


CFenetre3D : virtual public CFenetre


Est-ce que quelqu'un connait la solution?

5 réponses

Messages postés
36
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
18 août 2006

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;

Dans la classe dérivée:



virtual void CFenetre2D::operator =(const CFenetre2D &fenetre)

{

//Ton code

}



J'espère que ça peut t'aider
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

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
Messages postés
36
Date d'inscription
vendredi 22 juillet 2005
Statut
Membre
Dernière intervention
18 août 2006

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
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

on m'a fait part d'un article sur un autre forum, je vais regardé ca demain....

pour info :

http://c.developpez.com/faq/cpp/?page=classes#CLASS_clone
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

on m'a fait part d'un article sur un autre forum, je vais regarder ca demain....

pour info :

http://c.developpez.com/faq/cpp/?page=classes#CLASS_clone