Probleme d'imbrication de class

Signaler
Messages postés
12
Date d'inscription
vendredi 12 octobre 2007
Statut
Membre
Dernière intervention
23 août 2009
-
Messages postés
12
Date d'inscription
vendredi 12 octobre 2007
Statut
Membre
Dernière intervention
23 août 2009
-
bonjour à tous, je desire céer une classe avec des sous classes mais voila à la comliation, j'ai des message d'erreurs me disant que cette class utilise des classes non définies
voila ma classe

#ifndef CPERSONNE_H
#define CPERSONNE_H

class CNom;
class CDate;
class CAdresse;
class CTelephone;
class CChaine;

class CPersonne
{
public:
CPersonne(void);
~CPersonne(void);
private:
CNom m_oIdentityPers;
CDate m_oBirthDate, m_oDeathDate;
int m_dSex;
CChaine m_oNationalite;
CAdresse m_oAdresse;
CTelephone m_oTel;
};
/**********************Classs CNOM************************/
class CNom
{
private:
CChaine m_oNom, m_oPrenom, m_oTitre, m_oSurnom;
public:
CNom();
~CNom();
};
/*********************Classs CDate************************/
class CDate
{
private:
int m_dJour, m_Mois, m_Annee;
public:
CDate();
~CDate();
};
/********************Classs CAdresse********************/
class CAdresse
{
private:
CChaine m_oRue, m_oCodePostal, m_oVille, m_oPays;
int m_dNum;
public:
CAdresse();
~CAdresse();
};
/*********************class CTelephoe*****************/
class CTelephone
{
private:
CChaine m_oPrefixe;
int m_dTelNum;
public:
CTelephone();
~CTelephone();
};
//***********************class CChaine*******************/
class CChaine
{
private:
int m_dSize;
char *m_psTab;
public:
CChaine();
~CChaine();
};

#endif CPERSONNE_H
Merci d'avance de votre aide car là je suis "pommé"

4 réponses

Messages postés
15192
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 décembre 2021
101
Hello,
Quand le compilateur arrive sur la classe CPersonne, il voit qu'elle utilise des classes qu'il ne connaît pas. Il faut juste définir tes classes avant de les utiliser. Dans ton cas, tu déplaces ta classe CPersonne après toutes tes classes et ce sera bon.

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
12
Date d'inscription
vendredi 12 octobre 2007
Statut
Membre
Dernière intervention
23 août 2009

Merci Bruno pour la réponse mais le problème demeure
car je supose qu'il n'est plus nécessaire de mettre le nom des classe avant et donc, il faudrait mettre les classes les plus internes vers le haut, ce qui donnerait ceci

#ifndef CPERSONNE_H
#define CPERSONNE_H
/*
class CNom;
class CDate;
class CAdresse;
class CTelephone;
class CChaine;
*/

//***********************class CChaine*******************/
class CChaine
{
private:
int m_dSize;
char *m_psTab;
public:
CChaine();
~CChaine();
};
/**********************Classs CNOM************************/
class CNom
{
private:
CChaine m_oNom, m_oPrenom, m_oTitre, m_oSurnom;
public:
CNom();
~CNom();
};
/*********************Classs CDate************************/
class CDate
{
private:
int m_dJour, m_Mois, m_Annee;
public:
CDate();
~CDate();
};
/********************Classs CAdresse********************/
class CAdresse
{
private:
CChaine m_oRue, m_oCodePostal, m_oVille, m_oPays;
int m_dNum;
public:
CAdresse();
~CAdresse();
};
/*********************class CTelephoe*****************/
class CTelephone
{
private:
CChaine m_oPrefixe;
int m_dTelNum;
public:
CTelephone();
~CTelephone();
};

class CPersonne
{
public:
CPersonne(void);
~CPersonne(void);
private:
CNom m_oIdentityPers;
CDate m_oBirthDate, m_oDeathDate;
int m_dSex;
CChaine m_oNationalite;
CAdresse m_oAdresse;
CTelephone m_oTel;
};

#endif CPERSONNE_H

en compilat j'ai des erreurs de ce type:
Personne.obj : error LNK2019: symbole externe non résolu "public: __thiscall CTelephone::CTelephone(void)" (??0CTelephone@@QAE@XZ) référencé dans la fonction "public: __thiscall
Messages postés
15192
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 décembre 2021
101
Il faut implémenter les constructeurs, non?

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
Messages postés
12
Date d'inscription
vendredi 12 octobre 2007
Statut
Membre
Dernière intervention
23 août 2009

oui en effet on doit ajouter dans chaque tous les constructeurs necessaires, ici je commençais et je me rends compte qu'en compilant, il y avait quelques soucis