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 d' héritage


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Par défaut polymorphisme d' héritage
    Bonsoir,

    Dans mon programme se trouve entre autres deux classes, Transform et Translate. Translate hérite de Transform.

    Chacune de ces deux classes a une méthode avec la signature suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    virtual void setTansform(Transform* transform);
    Ma question est donc comment faire pour que la méthode de Translate soit appelée à la place de celle de Transform lorsque j'ai un pointeur Transform*.

    En vous remerciant

  2. #2
    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
    Ce sera automatiquement le cas si tes fonctions sont virtuelles.

  3. #3
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Question : dans ta classe Transform, tu as une fonction membre setTransform ?!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 183
    Par défaut
    Coucou,

    Ce sera automatiquement le cas si tes fonctions sont virtuelles.
    Elles sont virtuelles toutes les deux (même si c'est juste nécessaire pour setTransform de Transform.)

    Question : dans ta classe Transform, tu as une fonction membre setTransform ?!
    Oui, parceque le but est d'avoir par la suite un vecteur de pointeurs Transform pointant sur des instances de Translate, Rotate et Scale (polymorphisme d'héritage.) A partir de ce vecteur, le but est d'appeller la méthode setTransform et ça ne peut marcher que si cette méthode est définie dans Transform.

    Je vais revérifier mon code et si je trouve pas, je posterais la partie concernée.

    Merci de vos réponses

    [edit]

    Le problème venait du fait que l'instance dynamique de Tranform* était un new Transform au lieu d'un new Translate.

    Pour régler le problème, j'ai créé une méthode get() qui renvoit un clone de l'objet en allocation dynamique.

    Ca m'a l'air d'être une solution assez lourde mais ça marche donc voilà.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le polymorphisme d'héritage
    Par Tsuna dans le forum Débuter
    Réponses: 3
    Dernier message: 06/08/2013, 01h20
  2. Réponses: 10
    Dernier message: 15/04/2013, 18h43
  3. Polymorphisme et héritage en Java
    Par mooie dans le forum Général Java
    Réponses: 3
    Dernier message: 06/12/2012, 18h43
  4. Polymorphisme et héritage
    Par samlesu dans le forum C#
    Réponses: 12
    Dernier message: 28/02/2011, 09h38
  5. polymorphisme et héritage
    Par gelomaak dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 11/12/2008, 00h16

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