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 :

Dev CPP et héritage multiple


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 89
    Par défaut Dev CPP et héritage multiple
    J'utilise Dev CPP et j'ai une classe (Item) qui hérite de deux classes mères (TstCl1 et TstCl2). La déclaration de Item est donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Item : public TstCl1, public TstCl2
    {
    ...
    };
    Question 1 : J'ai observé que le navigateur de classe n'indique pas, pour la classe Item, quelles sont les classes héritées de TstCl1 et TstCl2 (par contre, il le fait correctement si Item n'hérite qu'une seule classe).
    S'agit-il d'un problème répertorié ou est-ce une mauvaise configuration de ma part ?

    Question 2 : TstCl1 contient une méthode virtuelle (draw()) qui est implémentée dans chaque classe qui hérite de TstCl1 (par exemple la classe Test, qui hérite uniquement de TstCl1 et la classe Item qui hérite de TstCl1 et TstCl2).
    Supposons maintenant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Test *tst;
     tst=new Test();
     
     Item *itm;
     itm=new Item();
    J'observe que (TstCl1*)tst->draw() fonctionne mais pas (TstCl1*)itm->draw(). Autrement dit, l'héritage mutliple et les méthodes virtuelles ne semblent pas faire bon ménage ... Y a-t-il quelque chose que je n'ai pas saisi ?

    Merci d'avance pour votre aide.

    Christian

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    1/ Aucune idee, je ne connais pas cet EDI.
    2/ Il ne devrait pas y avoir de problemes avec ce que tu decris. Maintenant comme tu ne montres pas de code, est-ce que ce que tu decris est bien ce que tu as ecrit, je n'en sais rien.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    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 394
    Par défaut
    Par contre, je te conseille d'éviter les casts C-style: Si tu joues avec l'héritage multiple, utiliser ces casts revient à se tirer une balle dans le pied.
    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 Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    dev-cpp n'est plus maintenu à jour. (ce qui pourrait expliquer ce bug). tourne toi vers un autre, comme code::blocks.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 89
    Par défaut
    Merci pour vos réponses. Je viens de tester sur C-Block (que je ne connais pas bien ...) et j'observe la même chose pour 1/
    Medinoc : peux-tu me dire ce que tu entends pas "se tirer une balle dans le pied" et que me conseilles-tu à la place des casts ?
    Christian

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    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 394
    Par défaut
    Utiliser des vrais casts C++: static_cast, dynamic_cast.
    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.

Discussions similaires

  1. [dev-cpp] probleme de link
    Par alex1er dans le forum Dev-C++
    Réponses: 5
    Dernier message: 20/01/2005, 17h41
  2. Mysql++ et dev-cpp..
    Par MrPomme dans le forum Windows
    Réponses: 4
    Dernier message: 03/08/2004, 14h50
  3. compilation directx dev-cpp
    Par gaut dans le forum DirectX
    Réponses: 3
    Dernier message: 11/02/2004, 04h16
  4. creation DLL dev-cpp
    Par gaut dans le forum Dev-C++
    Réponses: 4
    Dernier message: 29/01/2004, 18h15
  5. [XML Schemas]héritage multiple
    Par nicolas_jf dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 12h55

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