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 :

problème d'héritage C++


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut problème d'héritage C++
    Bonjour,
    j'ai besoin d'aide pour ce petit code en C++ sur l'héritage et surtout sur l'héritage multiple
    voici mon code:

    Donc dans ce code, mixte hérite de immeuble de bureau et immeuble de logement, immeuble de bureau et immeuble de logement héritent de immeuble, j'ai surement un gros problème au niveau de l'héritage multiple.
    Merci pour votre aide.


    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
     
    #include <iostream>   
    #include <ostream>   
    #include <stdlib.h>   
    #include <typeinfo>   
    #include <vector>   
    #include <string>   
     
     
    using namespace std;   
     
     
     
    class Immeuble{   
     
            protected:    
                      int annee_construction;   
                      string description_etat;   
                      string adresse;     
                      int i;   
     
             public:   
                      Immeuble(int annee, string descript, string add, int ii);   
                      virtual int ajout_contenu(int a)=0;   
                      int getI();   
                      ~Immeuble(void);   
    };   
     
    Immeuble::Immeuble(int annee, string descript, string add, int ii){   
             annee_construction=annee;   
             description_etat=descript;   
             adresse=add;   
             i=ii;   
    }   
     
    Immeuble::~Immeuble(void){   
     
    }   
     
    int Immeuble::ajout_contenu(int a){   
     
    }   
     
    int Immeuble::getI(){   
             return i;   
    }   
     
     
    class Industriel:public Immeuble{   
             public:   
                      int ajout_contenu(int a);   
                      Industriel(int annee, string descript, string add, int ii);   
    };   
     
    Industriel::Industriel(int annee, string descript, string add, int ii):Immeuble(annee, descript, add, ii){   
     
    }   
     
    int Industriel::ajout_contenu(int a){   
             i+=a;   
    }   
     
    ////////////////////////////////////////////////////////:   
    class Immeuble_de_logement:public Immeuble{   
             public:   
                      int ajout_contenu(int a);   
                      Immeuble_de_logement(int annee, string descript, string add, int ii);   
    };   
     
    Immeuble_de_logement::Immeuble_de_logement(int annee, string descript, string add, int ii) : Immeuble(annee, descript, add, ii){   
     
    }   
     
    int Immeuble_de_logement::ajout_contenu(int a){   
             i+=a;   
    }   
     
     
    class Immeuble_de_bureau:public Immeuble{   
             public:   
                      int ajout_contenu(int a);   
                      Immeuble_de_bureau(int annee, string descript, string add, int ii);   
    };   
     
    Immeuble_de_bureau::Immeuble_de_bureau(int annee, string descript, string add, int ii) : Immeuble(annee, descript, add, ii){   
     
    }   
     
     
    int Immeuble_de_bureau::ajout_contenu(int a){   
     i+=a;   
    }   
     
     
    class Mixte:public Immeuble_de_logement, public Immeuble_de_bureau{   
                     public:   
                      int ajout_contenu1(int a);   
                      Mixte(int annee, string descript, string add, int ii);   
    };   
     
    Mixte::Mixte(int annee, string descript, string add, int ii):Immeuble_de_logement(annee, descript, add, ii),Immeuble_de_bureau(annee, descript, add, ii){   
     
    }   
     
    int Mixte::ajout_contenu1(int a){   
             Immeuble_de_logement::ajout_contenu(a);   
    }   
     
     
    int main (){   
     
             cout << "\nTest:\nCreation Mixte\n";    
     
             string *des=new string;   
             string *ad=new string;   
             int ann;   
     
             cout << "\nAnnee: ";   
             cin >> ann;   
             cout << "\nDescription: ";   
             cin >> *des;   
             cout << "\nAdresse: ";   
             cin >> *ad;   
     
             Mixte *m = new Mixte(ann,*des,*ad,0);   
     
             cout << "\nVerification:\n\tI: " << m->getI();   
     
             return 0;   
     
    }

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    il s'agit d'héritage en diamant, cela nécessite un héritage virtuel.
    http://cpp.developpez.com/faq/cpp/?p...RITAGE_virtuel
    Voire une remise à plat de son code et de son architecture, ça dénote souvent une erreur d'archi.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Hello !

    Je pense que tu as besoin de lire ceci. En rajoutant l'héritage virtuel sur Immeuble_de_logement et Immeuble_de_bureau, ça devrait régler tes soucis.
    Find me on github

Discussions similaires

  1. [C#] Problème d'héritage, aide svp :(
    Par choas dans le forum Windows Forms
    Réponses: 12
    Dernier message: 06/05/2006, 11h46
  2. problème constructeur + héritage
    Par BOLARD dans le forum C++
    Réponses: 10
    Dernier message: 13/04/2006, 08h11
  3. [AS2] Problème d'héritage
    Par wwave dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 27/01/2006, 09h26
  4. Problème d'héritage ?
    Par Romanops dans le forum WinDev
    Réponses: 2
    Dernier message: 16/11/2005, 17h18
  5. Problème d'héritage d'une méthode protégée
    Par shenron666 dans le forum C++
    Réponses: 9
    Dernier message: 28/04/2005, 23h17

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