Bonjour � tous (bonsoir plutot)
Voila j'ai un petit soucis dont je n'arrive pas � trouver la solution.
Je suis actuellement en train de d�couvrir le c++ et viens de me lancer dans l'h�ritage.
Jusque la tout ce passait � peu pr�s normalement sauf que je n'arrive pas � acceder � une methode de ma classe m�re.. Et je ne sais pas trop pourquoi..
Voici le code :
Je vous explique apr�s ce qui cloche ..
Main.cpp
Personnes.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
34
35
36
37
38
39
40 #include <cstdlib> #include <iostream> #include "personnes.h" #include "etudiants.h" using namespace std; int main(void) { int i = 1; Personnes fontm(i,"Font","Mic","[email protected]"); i++; // on incremente l'identifiant Personnes fontn(i,"Font","Nic","[email protected]"); i++; // on incremente l'identifiant fontm.getInfos(); fontn.getInfos(); cout << endl; cout << "** Changement de l'email fontn" << endl; cout << endl; fontn.setMail("[email protected]"); fontn.getInfos(); // -- on va essayer maintenant de spécifier tout ça et de faire un étudiant :) cout << endl; cout << "****************************" << endl; cout << "** Creation d'un Etudiant : " << endl; cout << "****************************" << endl; cout << endl; Etudiants gab(i,"La","Gab","[email protected]",2006,false); i++; // on incremente l'identifiant gab.getInfos(); // va laisser le temps à l'utilisateur de lire les informations et va attendre // une action de sa part system("PAUSE"); return EXIT_SUCCESS; }
Personnes.cpp
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 #ifndef _PERSONNES_H_ #define _PERSONNES_H_ class Personnes { private : int identifiant; char * nom, * prenom, * mail; // attention de bien mettre * devant chaque chaine public: // constructeurs Personnes(); // par defaut Personnes(int &,char*,char*,char*); // par initialisation Personnes(const Personnes &); // par copie // destructeur ~Personnes(); // methodes de la classe void getInfos(); // acceder aux informations de la personne void setNom(char *); // changer son nom void setPrenom(char *); // changer son prenom void setMail(char *); // changer son mail // notons que nous ne changerons pas son identifiant qui est unique }; #endif
Etudiants.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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 #include <iostream> #include "personnes.h" using namespace std; // **************************************************************************** // *********** debut de la déclaration des constructeurs destructeur ********** // **************************************************************************** // constructeur par defaut Personnes::Personnes() { identifiant = 1; nom = "defaut"; prenom = "defaut"; mail = "[email protected]"; } // constructeur par initialisation Personnes::Personnes(int & ident, char * name, char * firstname, char * courriel) { identifiant = ident; nom = name; prenom = firstname; mail = courriel; } // constructeur par copie Personnes::Personnes(const Personnes & pers) { identifiant = pers.identifiant; nom = pers.nom; prenom = pers.prenom; mail = pers.mail; } // destructeur Personnes::~Personnes() { } // *************************************************************************** // *********** debut de la déclaration des methodes ************************** // *************************************************************************** // permettra l'affichage des informations des personnes void Personnes::getInfos() { cout << " ---------------------------------------------------------- " << endl; cout << " -- Informations relatives a :" << nom << " " << prenom << endl; cout << " -- Identifiant : " << identifiant << endl; cout << " -- Mail : " << mail << endl; } // permettra la modification du nom de la personne void Personnes::setNom(char * newname) { nom = newname; } // permettra la modification du prenom de la personne void Personnes::setPrenom(char * newpren) { prenom = newpren; } // permettra la modification du mail de la personne void Personnes::setMail(char * newmail) { mail = newmail; }
Et enfin Etudiants.cpp
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 #ifndef _ETUDIANTS_H_ #define _ETUDIANTS_H_ #include "personnes.h" // fichier d'entete herite class Etudiants : public Personnes { private : int promotion; bool boursier; char * vraifaux; // tableau de float contenant les notes public: // constructeurs Etudiants(); // par defaut Etudiants(int &,char*,char*,char*,int,bool); // constructeur par initialisation Etudiants(const Etudiants &); // constructeur par defaut ~Etudiants(); // destructeur void getInfos(); // accès aux nouvelles informations ainsi qu'aux précédentes void setBourses(bool); // modification des bourses void addNotes(int,float); // ajout de notes }; #endif // _ETUDIANTS_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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 #include <iostream> #include "etudiants.h" #include "personnes.h" using namespace std; // ********************************************************************* // *********** Déclaration des constructeurs et destructeurs *********** // ********************************************************************* // constructeur par défault Etudiants::Etudiants() { Personnes(); // création d'une personne vide promotion = 2006; // complement d'informations boursier = false; // complement d'informations } // constructeur par initialisation Etudiants::Etudiants(int & ident, char * name, char * firstname, char * email, int promo, bool bours) { Personnes(ident,name,firstname,email); promotion = promo; boursier = bours; } // constructeur par copie Etudiants::Etudiants(const Etudiants & e) { Personnes((Personnes) e); promotion = e.promotion; boursier = e.boursier; } // destructeur Etudiants::~Etudiants(){} // ********************************************************************* // *********** Déclaration des méthodes diverses à la classe *********** // ********************************************************************* void Etudiants::getInfos() { // test pour l'affichage en texte du status de boursier ou non if(boursier == false) { vraifaux = "non"; } else { vraifaux = "oui"; } this->Personnes::getInfos(); // accède normalement aux informations de la personne cout << " -- Promotion : " << promotion << endl; // affichage supplémentaire cout << " -- boursier ? : " << vraifaux << endl; // affichage supplémentaire }
|
\ /
Pour r�sumer![]()
Tout ce passe dans cette petite m�thode
Comme vous pouvez le voir dans le main je cr�er un nouvel �tudiant avec certaines informations.
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 void Etudiants::getInfos() { // test pour l'affichage en texte du status de boursier ou non if(boursier == false) { vraifaux = "non"; } else { vraifaux = "oui"; } this->Personnes::getInfos(); // accède normalement aux informations de la personne cout << " -- Promotion : " << promotion << endl; // affichage supplémentaire cout << " -- boursier ? : " << vraifaux << endl; // affichage supplémentaire }
Par la suite je construis une nouvelle personne avec ces m�mes informations, et je complete avec les informations de mon �tudiants..
J'aimerais afficher les info de la personne et les info complementaires.
C'est ici que �a beugue, il m'affiche bien les info de la personne, mais prend les information du constructeur par d�faut.
En gros �a m'affiche �a
Comme vous pouvez le constater ce n'est pas ce que je recherche.
...
blabla des autres trucs d'avant qui fonctionnent ...
...
----------------------------------------------------------
-- Informations relatives a : defaut defaut
-- Identifiant : 1
-- Mail :defaut
-- promotion : 2006
-- boursier : non
La classe personne fonctionne correctement
J'ai essayer avec et sans le this-> devant Personnes::getInfos() de mon GetInfos d'Etudiants.
Savez vous pourquoi cette drole de chose m'arrive t'elle?
En vous remerciant d'avance j'esp�re que vous saurez m'indiquer une r�ponse.
Merci..![]()
Bonne nuit � vous![]()







R�pondre avec citation
Partager