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
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.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
 
#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
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
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;     
}
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
 
#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_
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
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
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                
}
Comme vous pouvez le voir dans le main je cr�er un nouvel �tudiant avec certaines informations.
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


...
blabla des autres trucs d'avant qui fonctionnent ...
...

----------------------------------------------------------
-- Informations relatives a : defaut defaut
-- Identifiant : 1
-- Mail :defaut
-- promotion : 2006
-- boursier : non
Comme vous pouvez le constater ce n'est pas ce que je recherche.
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