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 :

[C++11] Héritage des constructeurs interdit avec virtual?


Sujet :

C++

  1. #1
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut [C++11] Héritage des constructeurs interdit avec virtual?
    Bonjour,

    Je ne parviens pas à expliquer pourquoi ce programme tout simple ne fonctionne pas.

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class A {
        public:
        A(int value) {
            cout << "Appel au constructeur de A";
        }
    };
     
    class B : public virtual A {
        public:
        using A::A;
    };
     
    int main(){
        A *objet = new B(1);
        B *objet2 = new B(1);
        return 0;
    }

    Si j'enleve "virtual", il n'y aucun problème.

    Donc je souhaite comprendre pourquoi l'héritage virtuel pose un problème dans ce cas là.
    Est il impossible d'appeler le constructeur d'une superclasse si on utilise l'héritage virtuel en C+11?

    Merci à ceux qui pourront m'éclairer.

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Bonjour,

    Voici une premiere explication de quand on utilise une virtual base class et enfin un exemple.

    Je n'ai jamais vu de constructeur comme le tien, et dans les exemples, personne n'utilise :

    Donc soit une specifite du C++11 (ou meme du C++) que je ne connais pas, soit tu as mal compris quelque chose.

  3. #3
    Membre expert

    Avatar de germinolegrand
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Octobre 2010
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2010
    Messages : 738
    Points : 3 892
    Points
    3 892
    Par défaut
    @jeje : c'est impossible avec les héritages virtuels
    @imperio : C++11

  4. #4
    Membre régulier

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Points : 81
    Points
    81
    Par défaut
    Merci.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/07/2011, 11h15
  2. Héritage d'une classe avec constructeur privé
    Par Braillane dans le forum Langage
    Réponses: 13
    Dernier message: 02/09/2009, 11h59
  3. Héritage et appel des constructeurs parents
    Par Antoine_935 dans le forum Débuter
    Réponses: 7
    Dernier message: 13/05/2009, 18h03
  4. Probleme du Voyageur de Commerce, mais plus compliquée, avec des chemins interdit
    Par Midou45 dans le forum Statistiques, Data Mining et Data Science
    Réponses: 6
    Dernier message: 03/01/2008, 13h14

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