bakibak
Messages postés4Date d'inscriptionsamedi 19 février 2005StatutMembreDernière intervention 5 janvier 2009
-
3 janv. 2009 à 17:42
bakibak
Messages postés4Date d'inscriptionsamedi 19 février 2005StatutMembreDernière intervention 5 janvier 2009
-
5 janv. 2009 à 07:28
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
#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
#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 :
#ifndef SOIGNEUR_H
#define SOIGNEUR_H
#include "Personne.h"
/**
* class Soigneur
*/
class Animal ;
class Personne ;
class Soigneur : public Personne
{
int m_TempsSoin;
std::list m_ListeAnimaux ;
public :
//Constructeur par defaut et sa surcharge.
Soigneur() ;
Soigneur(int TempsSoin, std::list 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.
niclouxs
Messages postés6Date d'inscriptionsamedi 3 janvier 2009StatutMembreDernière intervention 4 janvier 2009 3 janv. 2009 à 19:37
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;").
niclouxs
Messages postés6Date d'inscriptionsamedi 3 janvier 2009StatutMembreDernière intervention 4 janvier 2009 3 janv. 2009 à 20:53
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.