Bonjour,
J'ai un problème avec les inclusions de fichiers d'en-tête. Je ne sais pas trop comment vous présenter le
problème alors je vais être direct. Je vais vous montrer deux fichiers d'en-tête et vous expliquer comment
je vois le problème.
Voici un bout du fichier main.cpp et des deux fichiers d'en-tête :
main.cpp :
Grid.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 1. #include "Manage_piece.h" 2. #include "Piece.h" 3. #include "Grid.h" 4. #include "Case.h" 5. [...]
Case.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 1. #ifndef GRID_H 2. 3. #define GRID_H 4. 5. #include <vector> 6. #include "global.h" 7. #include "Piece.h" 8. #include "Case.h" 9. 10. class Grid 11. { 12. public : 13. [...] 14. Case * On_free_location ( const Piece & arg_piece ); 15. friend void Case :: Inc_nb_filled_cases ( Grid & arg_grid ); 16. [...] 17. }; 18. 19. #endif
Maintenant, voilà comment je pense que le problème apparait :
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 1. #ifndef CASE_H 2. 3. #define CASE_H 4. 5. #include "global.h" 6. #include "Grid.h" 7. 8. 9. class Case 10. { 11. public : 12. [...] 13. void Inc_nb_filled_cases ( Grid & arg_grid ); 14. [...] 15. }; 16. 17. #endif
1. [main.cpp; ligne 3 ] Inclusion de Grid.h
2. [Grid.h; ligne 3 ] Définition de GRID_H
3. [Grid.h; ligne 8 ] Inclusion de Case.h
4. [Case.h; ligne 3 ] Définition de CASE_H
5. [Case.h; ligne 6 ] GRID_H est déjà défini, on n'inclut pas Grid.h
6. [Case.h; ligne 13 ] **Erreur: le type Grid (dans la signature de la méthode Inc_nb_filled_cases) est inconnu puisqu'il est déclaré après cette méthode.**
7. [main.cpp; ligne 4 ] CASE_H est déjà défini, on n'inclut pas Case.h
Dans Grid.h le type Case est inconnu.
Dans Case.h le type Grid est inconnu.
Comment faire en sorte pour que ces types soient connus du compilateur ?
Partager