bonjour tout le monde .
j'ai un souci a utiliser les fonction amies .
je possède de deux classes livre et stylo . et je veux pourvoir accéder aux attribut prives de la classe livre depuis une méthode membre de la classe stylo .
Stylo.h
Stylo.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 #ifndef STYLO #define STYLO #include "livre.h" class Stylo{ public: Stylo(int p=0):prix(p){} void affiche(); void afficheLivre(Livre l); private : int prix; }; #endif
livre.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include<iostream> #include "stylo.h" using namespace std; void Stylo::affiche(){ cout <<"prix: "<<this->prix<<endl ; } void Stylo::afficheLivre(Livre l){ cout <<l.nom <<endl; }
livre.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 #ifndef LIVRE #define LIVRE #include "stylo.h" class Livre{ public: Livre(int p=0,std::string n="new livre"); void affiche(); friend void Stylo::afficheLivre(Livre l); private : std::string nom; int prix; }; #endif
le problème c'est que lorsque j'inclus livre.h dans le fichier .h de la classe stylo (puisque j'utilise un objet LivreafficheLivre(Livre l)) et de la même façon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 #include<iostream> #include "livre.h" using namespace std; Livre::Livre(int prix,string nom){ this->prix=prix; this->nom=nom; } void Livre::affiche(){ cout << "nom: " + this->nom + " prix: "<<this->prix<<endl ; }
lorsque j'inclus stylo.h dans le fichier .h de la classe livre il m'affiche des erreurs :
D:\c++SMI6\fctAmieClass\stylo.h|10|error: `Livre' has not been declared|
D:\c++SMI6\fctAmieClass\stylo.h|10|error: ISO C++ forbids declaration of `l' with no type|
D:\c++SMI6\fctAmieClass\livre.h|11|error: prototype for `void Stylo::afficheLivre(Livre)' does not match any in class `Stylo'|
D:\c++SMI6\fctAmieClass\stylo.h|10|error: candidate is: void Stylo::afficheLivre(int)|
||=== Build finished: 4 errors, 0 warnings ===|
merci de m'aider
Partager