IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

polymorphisme


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Août 2005
    Messages : 5
    Par défaut polymorphisme
    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 =.

    voici l'architecture, c'est pas très beau mais bon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
               Gtk::Widget
                ^           ^
                |            |
             CFenetre   |
           ^            ^ |
            |            |  |
    CFenetre3D     CFenetre2D

    Est-ce que quelqu'un connait la solution

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Août 2005
    Messages : 5
    Par défaut
    zut, on voi mal l'architecture, j'espère que ca ira mieux avec ca :

    CFenetre : public Gtk::Widget

    CFenetre2D : virtual public CFenetre, virtual public Gtk::Widget

    CFenetre3D : virtual public CFenetre

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Gtk::Widget
               ^    ^
               |    |
           CFenetre |
            ^    ^  |
            |    |  |
    CFenetre3D  CFenetre2D
    Mais bon, je ne comprends pas trop la question pour autant.

    En plus, j'avais cru lire quelque part sur ce forum que les opérateurs ne pouvaient être polymorphes... ??
    (ou bien, peut-être est-ce seulement pour le cas des opérateurs "globaux", du genre operator<<(ostream &, quelquechose))
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Une bonne méthode pour la copie d'objets polymorphiques dans la FAQ : http://c.developpez.com/faq/cpp/?pag...es#CLASS_clone

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Août 2005
    Messages : 5
    Par défaut
    > En plus, j'avais cru lire quelque part sur ce forum que les opérateurs ne pouvaient être polymorphes... ??

    En fait, j'essaye de palier à ce probleme car je me rend compte que ca va etre difficile.

    Merci Fiquet, je vais essayer ca pour voir

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    l'operator= de Gtk::Widget est-il virtuel ?

  7. #7
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    La copie (de valeur) est difficilement compatible avec les hiérarchies polymorphes. Quand on a vraiment besoin de dupliquer un objet provenant d'une telle hiérarchie, alors le "clonage" est la solution idiomatique. L'interdiction explicite de copie me suffit souvent -- cela évite des erreurs et cela simplifie le code.


    Si vraiment on veut une sémantique de valeur (ou juste de copie) sur une hiérarchie polymorphe et que cela tienne la route sur le plan design, j'ai croisé deux "feintes":
    - l'"idiome enveloppe-lettre" développé par Coplien
    - les "objets réguliers" qui sont présentés sur des transparents des responsables des projets Adam & Eve de chez Adobe.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Et où peut-on trouver ces transparents ?

  9. #9
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 82
    Par défaut
    Euh, juste une question bête : le fait que CFenetre2D dérive de Gtk::Widget ET de CFenetre, ça sert à quoi ?
    Le simple fait de dériver de CFenetre implique que CFenetre2D contiendra les membres de Gtk::Widget. En fait, je ne comprend pas ta double dérivation, elle me semble redondante.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Août 2005
    Messages : 5
    Par défaut
    c'est une erreur bête en fait
    mais ca été corrigé

Discussions similaires

  1. polymorphisme et autre
    Par jbeauport dans le forum C++
    Réponses: 15
    Dernier message: 29/06/2005, 13h43
  2. [Language] polymorphisme, interface ...
    Par Ikit dans le forum Langage
    Réponses: 5
    Dernier message: 03/03/2005, 11h39
  3. Réponses: 15
    Dernier message: 25/01/2005, 16h51
  4. Surcharge et Polymorphisme
    Par Hell dans le forum C++
    Réponses: 6
    Dernier message: 12/01/2005, 20h50
  5. Réponses: 2
    Dernier message: 25/07/2004, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo