Membres amies

gdefrance Messages postés 7 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 1 juin 2005 - 31 mai 2005 à 22:16
gdefrance Messages postés 7 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 1 juin 2005 - 1 juin 2005 à 22:43
Bonsoir à tous, débutant en C++, j'ai besoin de votre aide pour trouver mon bug dans le programme.
Voilà, je dois faire un exo avec un membre friend et lorsque je compile il me met cette erreur : [C++ Erreur] appreciation.h(25): E2316 'enseignant::apprecie(etudiant &,const char *)' n'est pas un membre de 'enseignant'

je suis en train de tourner en rond et certainement de rajouter de grosses conneries avec mes mouffles.

Ma fonction se trouve dans le fichier "enseignant" et la déclaration friend dans le fichier "appreciation".

Merci à tous ceux qui prendront le temps de m'aider, Bonne Soirée à tous.

-----------fichier : personne.h------------------
#ifndef _personne_
#define _personne_
{
// Déclarations des variables


protected:
char *nom, *prenom;
int age;


// Déclarations des fonctions membres


public : personne(void);
personne(const char *, const char *, int age);
virtual ~personne(void);
void nouveau_nom(const char * nom);
void nouveau_prenom(const char *);
void nouveau_age(int);
virtual void affiche(void);
const char* retourne_nom(void)const;


public : virtual void get_nom_matiere(void); // etudiant et enseignant
virtual void entrer_note(void); // etudiant
virtual float moyenne(void); // etudiant
virtual void entrer_nbre_heure(void); // enseignant
virtual double cout_enseignant(void); // enseignant
};


# endif

----------------fichier etudiant.h------------------

#ifndef _etudiant_
#define _etudiant_
#include"personne.h"


class etudiant : public personne
{
// Déclarations des variables


string* matiere;
double* note;
int nbre_matiere;


// Déclarations des fonctions membres


public : etudiant(void);
etudiant(const char *, const char *, int age, int nombre_matiere);
~etudiant(void);
void get_nom_matiere(void);
void entrer_note(void);
float moyenne(void);
void affiche(void);
};


# endif


-----------------fichier : enseignant . h----------------------------------

#ifndef _enseignant
#define _enseignant_
#include"personne.h"
#include"etudiant.h"

class enseignant : public personne
{
// Déclaration des variables


string* matiere;
int* heure;
int nbre_matiere;
int tarif_horaire;


// Déclarations des fonctions membres


public : enseignant(void);
enseignant(const char *, const char *, int, int, int);
~enseignant(void);
void get_nom_matiere(void);
void entrer_nbre_heure(void);
double cout_enseignant(void);
void affiche(void); void apprecie(etudiant& , const char* );
};


# endif



-----------------Fichier Appreciation . h-------------------

#ifndef _appreciation_
#define _appreciation_
#include"personne.h"
#include"etudiant.h"

class enseignant;

class appreciation
{
char* nom_enseignant;
char* nom_etudiant;
char* commentaire;


friend void enseignant::apprecie(etudiant& , const char* );


public : appreciation(const char* nom_prof, const char* nom_eleve, const char* texte);
~appreciation();



};


# endif

6 réponses

cs_poppyto Messages postés 540 Date d'inscription dimanche 29 décembre 2002 Statut Modérateur Dernière intervention 13 mai 2011
31 mai 2005 à 23:37
Ton code fonctionne très bien hormis la classe personne dont tu as oublié le nom !

#ifndef _personne_
#define _personne_

class personne
{
// Déclarations des variables
protected:
char *nom, *prenom;
int age;

http://www.poppyto.net LE site pour les bassistes
0
gdefrance Messages postés 7 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 1 juin 2005
1 juin 2005 à 21:34
Salut poppyto, merci de me lire et de m'aider,
salut à tous,

j'ai retourné mon programme dans tous les sens et j'ai toujours le même message d'erreur.
De ce fait, j'ai copié le fichier "appreciation.h" dans le fichier "enseignant.h" à la suite
et j'ai fait de même pour les fichiers ".cpp"
J'ai aussi retiré du projet le fichier "enseignant"
Et la miracle, il n'y a plus d'erreur du style "enseignant::apprecie(etudiant &,const char *)" , ma fonction friend fonctionne comme il se doit.

Je ne vois vaiment pas pourquoi, serait-ce la déclaration en avant de la class "enseignant" dans le fichier "appreciation.h" qui ne convient pas.
Sachant que je dois faire une fonction friend avec ma class "etudiant", il risquerait à la fin de me rester plus qu'un fichier !!!

Si vous avez des idées pour m'éclairer, merci et bonne soirée à tous.
0
cs_poppyto Messages postés 540 Date d'inscription dimanche 29 décembre 2002 Statut Modérateur Dernière intervention 13 mai 2011
1 juin 2005 à 21:47
Je comprend mieux,
dans appreciation . h, il manquait #include"enseignant.h"

Stef ^^

http://www.poppyto.net LE site pour les bassistes
0
gdefrance Messages postés 7 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 1 juin 2005
1 juin 2005 à 22:07
Salut poppyto,

J'ai fait ce que tu m'as dit et là, le message d'erreur est :

[C++ Erreur] enseignant.h(18): E2238 Déclaration multiple pour 'enseignant'
[C++ Erreur] enseignant.h(18): E2344 Déclaration plus récente de 'enseignant'

A ne rien n'y comprendre !!!!!!!!

Merci pour ton aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_poppyto Messages postés 540 Date d'inscription dimanche 29 décembre 2002 Statut Modérateur Dernière intervention 13 mai 2011
1 juin 2005 à 22:13
Ok je tente sans tester :

#ifndef _appreciation_
#define _appreciation_

#include"enseignant.h"

class appreciation
{
char* nom_enseignant;
char* nom_etudiant;
char* commentaire;
friend void enseignant::apprecie(etudiant& , const char* );


public : appreciation(const char* nom_prof, const char* nom_eleve, const char* texte);
~appreciation();



};


# endif

http://www.poppyto.net LE site pour les bassistes
0
gdefrance Messages postés 7 Date d'inscription lundi 21 juin 2004 Statut Membre Dernière intervention 1 juin 2005
1 juin 2005 à 22:43
Ca y est, ca marche,
En fait j'ai viré tout les includes dans le fichier "appreciation.h" et depuis, plus de problème, ma fonction est bien appelé et elle tout fonctionne sans erreur.
Allez donc comprendre pourquoi ????????

Merci à toi Poppyto, de m'avoir aidé, au plaisir et bon courage avec les autres question, je suis loin de pouvoir aider les collègues mais bientôt j'espère.

Merci.
0
Rejoignez-nous