Salut aux développeurs en C++,


j'ai un problème de multi-fichier.
j'ai un fichier qui utilise des classes et des types enumérations d'un autre fichier:

competence.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
 
class competence{
   private:
      un_de le_de;
      personnage *P_personnage;
   public:
      competence();
      int lancer_de();
      int accesseur_For();
      int accesseur_Dex();
      int accesseur_Con();
      int accesseur_Int();
      int accesseur_Sag();
      int accesseur_Cha();
      race accesseur_ra();
      classe accesseur_cl();
      virtual int accesseur_caract();
};
 
competence::competence():le_de(20){}
 
int competence::lancer_de(){
   return le_de.lance();
}
 
int competence::accesseur_For(){
   return P_personnage->accesseur_For();
}
 
int competence::accesseur_Dex(){
   return  P_personnage->accesseur_Dex();
}
 
int competence::accesseur_Con(){
   return  P_personnage->accesseur_Con();
}
 
int competence::accesseur_Int(){
   return  P_personnage->accesseur_Int();
}
 
int competence::accesseur_Sag(){
   return  P_personnage->accesseur_Sag();
}
 
int competence::accesseur_Cha(){
   return  P_personnage->accesseur_Cha();
}
 
race competence::accesseur_ra(){
   return  P_personnage->accesseur_ra();
}
 
classe competence::accesseur_cl(){
   return  P_personnage->accesseur_cl();
}
g++ -c competence.cpp me donne ceci:
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
competence.cpp:3: erreur: 'un_de' does not name a type
competence.cpp:4: erreur: ISO C++ forbids declaration of 'personnage' with no type
competence.cpp:4: erreur: expected ';' before '*' token
competence.cpp:14: erreur: 'race' does not name a type
competence.cpp:15: erreur: 'classe' does not name a type
competence.cpp: In constructor 'competence::competence()':
competence.cpp:19: erreur: class 'competence' does not have any field named 'le_de'
competence.cpp: In member function 'int competence::lancer_de()':
competence.cpp:22: erreur: 'le_de' was not declared in this scope
competence.cpp: In member function 'int competence::accesseur_For()':
competence.cpp:26: erreur: 'P_personnage' was not declared in this scope
competence.cpp: In member function 'int competence::accesseur_Dex()':
competence.cpp:30: erreur: 'P_personnage' was not declared in this scope
competence.cpp: In member function 'int competence::accesseur_Con()':
competence.cpp:34: erreur: 'P_personnage' was not declared in this scope
competence.cpp: In member function 'int competence::accesseur_Int()':
competence.cpp:38: erreur: 'P_personnage' was not declared in this scope
competence.cpp: In member function 'int competence::accesseur_Sag()':
competence.cpp:42: erreur: 'P_personnage' was not declared in this scope
competence.cpp: In member function 'int competence::accesseur_Cha()':
competence.cpp:46: erreur: 'P_personnage' was not declared in this scope
competence.cpp: At global scope:
competence.cpp:49: erreur: 'race' does not name a type
competence.cpp:53: erreur: 'classe' does not name a type
tandis que si j'ajoute "class un_de;" et "class personnage;" au début du fichier "competence.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
 
g++ -c competence.cpp me donne:
competence.cpp:5: erreur: field 'le_de' has incomplete type
competence.cpp:16: erreur: 'race' does not name a type
competence.cpp:17: erreur: 'classe' does not name a type
competence.cpp: In constructor 'competence::competence()':
competence.cpp:21: erreur: class 'competence' does not have any field named 'le_de'
competence.cpp: In member function 'int competence::lancer_de()':
competence.cpp:24: erreur: 'le_de' was not declared in this scope
competence.cpp: In member function 'int competence::accesseur_For()':
competence.cpp:28: erreur: invalid use of incomplete type 'struct personnage'
competence.cpp:2: erreur: forward declaration of 'struct personnage'
competence.cpp: In member function 'int competence::accesseur_Dex()':
competence.cpp:32: erreur: invalid use of incomplete type 'struct personnage'
competence.cpp:2: erreur: forward declaration of 'struct personnage'
competence.cpp: In member function 'int competence::accesseur_Con()':
competence.cpp:36: erreur: invalid use of incomplete type 'struct personnage'
competence.cpp:2: erreur: forward declaration of 'struct personnage'
competence.cpp: In member function 'int competence::accesseur_Int()':
competence.cpp:40: erreur: invalid use of incomplete type 'struct personnage'
competence.cpp:2: erreur: forward declaration of 'struct personnage'
competence.cpp: In member function 'int competence::accesseur_Sag()':
competence.cpp:44: erreur: invalid use of incomplete type 'struct personnage'
competence.cpp:2: erreur: forward declaration of 'struct personnage'
competence.cpp: In member function 'int competence::accesseur_Cha()':
competence.cpp:48: erreur: invalid use of incomplete type 'struct personnage'
competence.cpp:2: erreur: forward declaration of 'struct personnage'
competence.cpp: At global scope:
competence.cpp:51: erreur: 'race' does not name a type
competence.cpp:55: erreur: 'classe' does not name a type
dois-je redéfinir mes classes et enumérations dans competence.cpp?
ou quelqu'un a une idée?

je vous remercie