begin process at 2012 05 29 17:27:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Probleme d'heritage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme d'heritage

samedi 3 janvier 2009 à 17:42:30 | Probleme d'heritage

bakibak

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 :

[I].../Soigneur.h|26|erreur: invalid use of incomplete type 'struct Personne'|[/I]

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]

#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 ) ;
[/CODE]


AgentEntretien.h
[CODE]

#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 ) ;
[/CODE]


Et enfin celui qui merde, Soigneur.h :
[CODE]

#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 ) ;
[/CODE]

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
samedi 3 janvier 2009 à 19:37:31 | Re : Probleme d'heritage

niclouxs

Salut,

Dans ton fichier Soigneur.h, tu fais un forward declaration de Personne ("class Personne;") qui n'est pas necessaire puisque tu inclus deja Personne.h. J'imagine que le compilateur essaye de compiler la classe soigneur, il prends cette 2eme declaration (incomplete) comme reference ce qui causerait l'erreur que tu as.

A ta place, j'essayerais d'enlever cette ligne ("class Personne;").

Seb
samedi 3 janvier 2009 à 19:50:50 | Re : Probleme d'heritage

bakibak

Déjà essayé, j'ai mis cette ligne car si je ne la met pas j'ai droit à un :

/home/.../Soigneur.h|26|erreur: expected class-name before '{' token|


Un autre systeme pour remplacer ça si mon erreur vient de la ?


samedi 3 janvier 2009 à 20:53:10 | Re : Probleme d'heritage

niclouxs

Ok, donc ca signifie que ta classe Personne n'est pas bien reconnue.
Je reverifierais le fichier Personne.h: Est-ce qu'il y a bien un ";" apres l'accolade de fermeture "}" qui termine la definition de la classe ?

Si c'est pas ca, pourrais tu mettre le fichier Personne.h au complet ? Ca pourrait peut etre nous aider.

Seb
dimanche 4 janvier 2009 à 12:50:14 | Re : Probleme d'heritage

bakibak

Voila le code de Personne.h :


#ifndef PERSONNE_H
#define PERSONNE_H


#include "Zoo.h"

class Zoo ;


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 ) ;

  /**
   * @return Personne
   */
  Personne* get_Personne ( );

  /**
   * Set the value of m_Nom
   * @param new_var the new value of m_Nom
   */
  void setNom ( std::string new_var );

  /**
   * Get the value of m_Nom
   * @return the value of m_Nom
   */
  std::string getNom ( );

  /**
   * Set the value of m_Prenom
   * @param new_var the new value of m_Prenom
   */
  void setPrenom ( std::string new_var );

  /**
   * Get the value of m_Prenom
   * @return the value of m_Prenom
   */
  std::string getPrenom ( );

  /**
   * Set the value of m_Adresse
   * @param new_var the new value of m_Adresse
   */
  void setAdresse ( std::string new_var );

  /**
   * Get the value of m_Adresse
   * @return the value of m_Adresse
   */
  std::string getAdresse ( );

  /**
   * Set the value of m_Id
   * @param new_var the new value of m_Id
   */
  void setId ( int new_var );

  /**
   * Get the value of m_Id
   * @return the value of m_Id
   */
  int getId ( );

  /**
   * Set the value of m_Tarif
   * @param new_var the new value of m_Tarif
   */
  void setTarif ( float new_var );

  /**
   * Get the value of m_Tarif
   * @return the value of m_Tarif
   */
  float getTarif ( );

  ~Personne() ;

};

#endif // PERSONNE_H


dimanche 4 janvier 2009 à 23:22:07 | Re : Probleme d'heritage

nickydaquick

Membre Club

Salut,
1- crees un fichier d'entete header.hpp . Dans ce fichier tu definis tout ce dont tu as besoin

header.hpp
[code]
#include <iostream>
#include <cstdlib>
#include <list>
#include <string>
using namespace std;

class Zoo;
class Personne;
class Enclos;
class AgentEntretien;
class Animal;
class Soigneur;


Ensuite dans chaque fichier d'entete de definition de classe tu inclues ce fichier header.hpp (ou .h ca depend de comment tu l'appelles).

Bonne continuation.
[ Lien ]
je suis heureux de faire partie d'une grande famille ...!
/B&

lundi 5 janvier 2009 à 07:28:29 | Re : Probleme d'heritage

bakibak

J'essaye ca des que je rentre de partiel cet aprem.

Merci beaucoup :)




Cette discussion est classée dans : code, class, std, soigneur, zoo


Répondre à ce message

Sujets en rapport avec ce message

utlisation de la classe string [ par borgeomi ] borgeomibonjouuuuuuur !!!!!nouveau programmeur en C ++ ( mais vieux en cobol )sous visual C++création d'une fonction qui enlève les espaces de début e taille de matrice [ par MLine ] Dans c++ builder 5, je déclare une matrice dans ma classe Organism :class Organism{ // plein d'autres trucs protected : static float DispCoef Problème avec les std::string [VC++6.0] [ par D1m3x ] Je suis en train de programmer un petit programme où j'utilise les templates, c'est la première fois que j'en utilise, alors je ne connais pas encore Class & CreateThread [ par Renfield ] Bonjour, j'ai un petit soucis de compilation...dans une classe, je voudrais créer un Thread. ma proc est définie comme cela :LPTHREAD_START_ROUTINE string [ par blueburry ] bonjour,je suis en train de programmer sur visual c++.g un probleme avec les  string, je fais:char nom[26];char sport[26]; string nom = &nom[0];string string et + [ par blueburry ] bonjour,je suis en train de programmer sur visual c++.g un probleme avec les  string, je fais:char nom[26];char sport[26]; string nom = &nom[0];string [VC++] erreur : std is not a class... ??? [ par elo29 ] Bonjour, Je code sous Visual C++ et il refuse le "using namespace std". L'erreur est la suivante : error C2653 : 'std' is not a class or a namespace Template avec surcharge d'opérateurs [ par benjiiim94 ] Bonjour,J'essaie déséspéremment de créer une petite classe pour me familiariser avec les templates. Non sans mal j'ai obtenu un résultat pas mal jusqu pb avec les string !!! [ par ElectricalMan ] slt,j'ai qqs "erreurs" à la compilation ! c à s'arracher les cheveux, pouvez vous m'aider svp : #include  #include #include using namespace std;< code en c++ [ par Sgh_Khaoula ] Svp est ce que quelqun'un peut m'aider à coprendre la ligne "Triangles = new std::vector[ Depth ];"MultiMesh::MultiMesh( int depth ) { Depth = depth; 


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales