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 :

Question sur l'héritage virtuel


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Par défaut Question sur l'héritage virtuel
    Bonjour tout le monde

    J'ai rencontré un problème lors de la compilation de mon projet :

    J'ai une classe mère A et j'ai deux classe B et C qui dérive d'une manière virtuelle de A

    class A
    {
    };

    class B:virtual public A
    {};


    class C:virtual public A
    {};


    J'ai dans mon projet ce ligne de code :
    B* b=static_cast<B *>a;

    tel que a est un pointeur de type A.

    il me donne une erreur de compilation :
    error: illegal type cast

    Je voudrais savoir la source de l'erreur sachant que ca marche tres bien si j'enlève le mot virtual des deux classes filles..


    Merci d'avance pour votre aide

    A bientôt

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Jette un œil là-dessus.

  3. #3
    Membre averti
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Par défaut
    Merci beaucoup je vais jeter un coup d'œil merci beaucoup

  4. #4
    Membre averti
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Par défaut

    J'ai pas compris comment ça devrait marcher j'ai testé tous les types de casting mais ça marche pas


    est ce que l'héritage virtuel a une relation avec ce problème ???

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Je n'ai pas cherché à tout bien comprendre, mais apparemment, ça n'est pas un problème de type de transtypage.

    Quel que soit le type, il risque d'y avoir une ambigüité.

  6. #6
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Je vais peut-être dire une bêtise, mais si ta classe B est une "copie" virtuelle de la classe A, B devient alors une classe abstraite, qui, par définition, ne peut être instanciée.

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

Discussions similaires

  1. petite question sur l'héritage et les cast
    Par baedal dans le forum Langage
    Réponses: 3
    Dernier message: 29/02/2008, 00h48
  2. Questions sur l'héritage dans Matisse
    Par Cassios dans le forum NetBeans
    Réponses: 8
    Dernier message: 14/03/2007, 23h23
  3. Réponses: 2
    Dernier message: 20/10/2006, 15h07
  4. Question sur l'héritage
    Par the big ben 5 dans le forum Delphi
    Réponses: 28
    Dernier message: 06/06/2006, 17h27
  5. [Hardware] questions sur la mémoire virtuelle
    Par Irae dans le forum Composants
    Réponses: 22
    Dernier message: 04/10/2005, 12h41

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