Déclaration d'une Class dans une autre [Résolu]

Signaler
Messages postés
10
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
3 mai 2010
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
salut tous le monde j'ai un problème, je veut déclaré une variable de type Etudiant sachant que Etudiant est une classe voici les deux code.h (Etudiant et Élément ) merci d'avance pour vos réponse.
-------Class Etudiant-----------
class Etudiant
{public:
int *ID;
char *nom;
int *etranger;
float *moyene;
int choix1;
int choix2;
int choix3;
static int compteur;


public:
Etudiant(char*,int,float,int,int,int);
void display();
};

-----------Class Élément-------------
class Element
{
public:
Etudiant valeur; //le compilateur me donne une erreur sur cette ligne
Element *suivant;
public:
void ajouteElement(Etudiant);
// void ajoute_a_la_queue(double);
// void Supprime_Suivant();
void Display();
};

4 réponses

Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
8
En gros :

#include 

using std::cout;
using std::endl;
using std::string;


//A mettre dans un fichier Etudiant.hpp

class Etudiant
{

public:

Etudiant(string,int,float,bool,int,int,int);
void display();
static int getCompteur() {return wCompteur;} //Une méthode statique pour accèder à ton compteur
~Etudiant () {wCompteur--;} //Il faut un destructeur pour actualiser le compteur

private:
//Tous les attributs doivent êtres privés c'est la règle de l'encapsulation

int wID; //Nombre entier et non pointeur sur nombre entier
string wNom; //Impossible de contenir un char seul, je te conseil string
bool wEtranger; //Etranger est à mon avis un booléen
float wMoyenne;

int wChoix1;
int wChoix2;
int wChoix3;

static int wCompteur;

};

int Etudiant::wCompteur = 0;



//A mettre dans un fichier Etudiant.cpp

Etudiant::Etudiant(string nom ,int id ,float moyenne,bool etranger,int choix1,int choix2,int choix3) :
wID(id),wNom(nom),wEtranger(etranger),wMoyenne(moyenne),wChoix1(choix1),wChoix2(choix2),wChoix3(choix3)
{
wCompteur++; //Incrémente ton compteur à chaque création d'Etudiant
}

void Etudiant::display()
{
cout << "\n\n";
cout << "Nom : " << wNom << "\nID : " << wID << "\nEtranger : ";
wEtranger ? cout << "Oui": cout << "Non";
cout << "\nMoyenne : " << wMoyenne << "\nChoix 1 : " << wChoix1
    << "\nChoix 2 : " << wChoix2 << "\nChoix 3 : " << wChoix3;
cout << "\n\n";
}



//A mettre dans un fichier Element.hpp et ne pas oublier d'inclure Etudiant.hpp

class Element //Je ne developpe pas cette classe, je ne sais pas ce que tu compte en faire
{
public:



void ajouteElement(Etudiant);
void Display();

private:
//Idem pour les attributs
Etudiant valeur;
Element *suivant;
};


int main()
{

cout << "Il y a " << Etudiant::getCompteur() << " etudiant(s).\n";

Etudiant *eBob = new Etudiant("Bob",154,16.32,true,20,54,63); //Un pointeur pour pouvoir l'objet

cout << "\nIl y a " << Etudiant::getCompteur() << " etudiant(s).\n";
eBob->display();

Etudiant *eJohn = new Etudiant("John",155,10.26,false,18,4,75);

cout << "\nIl y a " << Etudiant::getCompteur() << " etudiant(s).\n";
eBob->display();
eJohn->display();

delete eBob; //supprime un objet

cout << "\nl y a " << Etudiant::getCompteur() << " etudiant(s).\n"; //Le compteur s'est actualiser
eJohn->display();

delete eJohn;

cout << "\nIl y a " << Etudiant::getCompteur() << " etudiant(s).\n";




    cout << "\n\n\n";
    return 0;
}




Mais n'oublie jamais les règles d'encapsulation, les attribues doivent être privés !

Pop70
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
8
J'ai testé ton code, et il fonctionne du moins s'il sont dans le même fichier. A mon avis tu as déclarer ces deux classes dans deux fichiers différents, et tu n'a pas inclus "Etudiant.hpp" dans "Element.hpp".

Autre chose , dans Etudiant tu déclares des variables membres publiques, c'est très très déconseillé, mets les privées et utilise des fonctions publiques pour y accéder.

J'ai aussi du mal à comprendre pourquoi ID, nom, etranger et moyenne sont des pointeurs, mais ça ça dépend de l'utilisation que tu va en faire.


Pop70
Messages postés
10
Date d'inscription
mardi 15 décembre 2009
Statut
Membre
Dernière intervention
3 mai 2010

merci pour votre aide je suis encore débutent en c++ donc j'essaye d'évité les petits truck que je ne maitrise pas
en se qui concerne le Id,Nom ...c'est les condition de notre prof il nous a demandé de faire un programme qui nous donne certaine liste
et bien sur on faisons deux Class(Element et Etudient) la première pour créé une liste chainée et la deuxième pour la définition de chaque étudiant. jusqu'à présent j'ai pas réussit a le faire mais je v'ai prendre en considération tes conseille.merci beauuucoup
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
11
Bonjour,

Pour une question C++, merci de poster sur cppfrance.com dans un thème C++.

[ Déplacé sur cppfrance ]