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 :

Probleme d'heritage multiple


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 6
    Par défaut Probleme d'heritage multiple
    Bonjour a tous, je suis en train de coder un projet pour la gestion d'un zoo a la fac.

    Sans tout vous décrire j'ai une classe personne et deux classe héritées qui sont les agents d'entretien et les soigneur.

    A la compilation, le fichier agent ne pose pas de probleme, mais j'ai une erreur sur le fichier soigneur :

    .../Soigneur.h|26|erreur: invalid use of incomplete type ‘struct Personne’|

    J'ai codé de la même facon mes deux fichiers et je ne comprend rien.

    Voici les morceaux de code importants :


    Personne.h
    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
     
     
    #ifndef PERSONNE_H
    #define PERSONNE_H
     
    #include "Zoo.h"
     
    class Zoo ;
    class Soigneur ;
     
     
    class Personne
    {
     
      Zoo* m_Zoo   ;
      std::string m_Nom;
      std::string m_Prenom;
      std::string m_Adresse;
      int m_Id;
      float m_Tarif;
     
     
    public :
     
      //Constructeur par defaut et sa surcharge.
      Personne () ;
      Personne (Zoo* Zoo ,  std::string Nom,  std::string Prenom,  std::string Adresse,  int Id,  float Tarif ) ;

    AgentEntretien.h
    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
     
     
    #ifndef AgentEntretien_H
    #define AgentEntretien_H
    #include "Personne.h"
     
     
     
     
     
    /**
      * class AgentEntretien
      */
     
     
    class Enclos ;
     
    class AgentEntretien : public Personne
    {
     
      int m_TempsEntretient;
      Enclos* m_Enclos ;
     
     
    public:
     
      //Constructeur par defaut et sa surcharge.
      AgentEntretien() ;
      AgentEntretien ( int TempsEntretient,Enclos* Enclos ) ;

    Et enfin celui qui merde, Soigneur.h :
    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
     
     
    #ifndef SOIGNEUR_H
    #define SOIGNEUR_H
     
     
     
    #include "Personne.h"
     
     
     
     
    /**
      * class Soigneur
      */
     
     
    class Animal ;
    class Personne ;
     
    class Soigneur : public Personne
    {
     
     
      int m_TempsSoin;
      std::list<Animal*> m_ListeAnimaux ;
     
     
    public :
     
      //Constructeur par defaut et sa surcharge.
      Soigneur() ;
      Soigneur(int TempsSoin, std::list<Animal*> Liste_Animaux ) ;
    Je n'ai bien sur pas collé la suite des fichiers. Si manque quelque chose je le rajouterai.

    Si vous pouviez me sauver la vie car là je sature un maximum sur cette erreur depuis quelques heures.

    Merci d'avance smile

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Lorsque tu inclus l'en-tête d'une classe, il est inutile de déclarer la classe ensuite.

    Personne.h
    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
    #ifndef PERSONNE_H
    #define PERSONNE_H
     
    #include "Zoo.h"
     
    class Personne
    { 
      Zoo* m_Zoo   ;
      std::string m_Nom;
      std::string m_Prenom;
      std::string m_Adresse;
      int m_Id;
      float m_Tarif;
     
    public : 
      //Constructeur par defaut et sa surcharge.
      Personne () ;
      Personne (Zoo* Zoo ,  std::string Nom,  std::string Prenom,  std::string Adresse,  int Id,  float Tarif ) ;
    };
     
    #endif

    AgentEntretien.h
    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
    #ifndef AgentEntretien_H
    #define AgentEntretien_H
     
    #include "Personne.h"
     
    class Enclos ;
     
    class AgentEntretien : public Personne
    { 
      int m_TempsEntretient;
      Enclos* m_Enclos ;
     
    public: 
      //Constructeur par defaut et sa surcharge.
      AgentEntretien() ;
      AgentEntretien ( int TempsEntretient, Enclos* Enclos ) ;
    };
     
    #endif

    Soigneur.h
    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
    #ifndef SOIGNEUR_H
    #define SOIGNEUR_H
     
    #include "Personne.h"
     
    class Animal;
     
    class Soigneur : public Personne
    { 
      int m_TempsSoin;
      std::list<Animal*> m_ListeAnimaux ;
     
    public : 
      //Constructeur par defaut et sa surcharge.
      Soigneur() ;
      Soigneur(int TempsSoin, std::list<Animal*> Liste_Animaux ) ;
     };
     
    #endif

Discussions similaires

  1. Probleme d'imbrication multiple
    Par Gwipi dans le forum Requêtes
    Réponses: 5
    Dernier message: 27/03/2006, 17h36
  2. [POO] Héritage multiple Parent
    Par djshaker dans le forum Langage
    Réponses: 15
    Dernier message: 15/03/2006, 17h35
  3. Réponses: 9
    Dernier message: 25/05/2005, 18h17
  4. Probleme d'heritage curieux
    Par viddak dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/05/2005, 14h58
  5. [Kylix] heritage multiple et interfaces :(
    Par le_barbu dans le forum EDI
    Réponses: 4
    Dernier message: 26/01/2004, 19h30

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