Bonjour,
Le titre n'est pas très représentatif mais je ne sais pas comment le dire...
Contexte :
Je développe une application utilisant un maillage (algo de DELAUNAY) et je cré plusieurs objet dont "Triangle" et "Segment". Pour mettre en place cet algo j'ai besoin que ma classe Triangle possède 3 pointeurs vers des objets type Segment (logique un triangle à bien 3 arêtes) donc la pas de Pb mais j'ai également besoin que ma classe Segment possède 2 pointeurs vers des objets type Triangle (les 2 triangles juxtaposés du maillage partageant le segment en question.)
J'ai donc voulu déclarer mes classes comme cela :
Pour la classe Triangle :
Pour la classe Segment :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef TRIANGLE #define TRIANGLE #include <Segment.h> class Triangle { public : Segment *S1, *S3, *S3; }; #endif
Le Hic c'est que ca plante à la compilation sur la ligne 11 de la classe Triangle : 'Segment' does not name a type'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #ifndef SEGMENT #define SEGMENT #include <Triangle.h> class Segment { public : Triangle *Tv1, *Tv2; }; #endif
=> Si je comprend bien c'est qu'il ne connait pas le type 'Segment' à ce moment là alors qu'il est bien défini en include.
Si je supprime #include <Triangle.h> de la classe Segment, le problème disparait mais je ne peux alors plus avoir de pointeurs vers des triangles dans cette classe ce qui est problématique.
Je sens bien que ca ne peut pas marcher comme cela puisque chaque classe a besoin de l'autre pour être définie mais comment solutionner proprement ce problème ?
Merci d'avance pour votre aide, et désolé si la réponse est obvious, je débute en programmation.
Bien cordialement,
Nico
Partager