Bonjour,
J'ai un probleme avec une de mes classes.
J'ai cree une classe CCourbes_de_niveau et tout compile tres bien mais qd je declare un objet de cette classe, j'obtient cette erreur a la compilation :
Compiling...
Courbes_de_niveau.cpp
c:\...\model.h(181) : error C2079: 'courbes_de_niveau' uses undefined class 'CCourbes_de_niveau'
voici le Courbes_de_niveau.h
voici le Courbes_de_niveau.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
57
58
59
60
61
62
63 // Courbes_de_niveau.h: interface for the CCourbes_de_niveau class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_COURBES_DE_NIVEAU_H__BE465260_1823_4854_9F41_96EC4D5B570C__INCLUDED_) #define AFX_COURBES_DE_NIVEAU_H__BE465260_1823_4854_9F41_96EC4D5B570C__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "mathematique.h" class Model; // dit que la classe existe (Cmodel.h declare ds le .cpp) struct ligne; struct Vector4; class CCourbes_de_niveau { public: Model *model; bool from; double heigh; double r, g, b; // pour convertir de RGB en HSV double borne_min, borne_max; int nombre_de_courbe; // *courbe contiendra toutes les lignes qui forment la courbe et longuer represente la somme des longueurs des lignes qui forment la courbe struct Courbe_de_niveau { ligne *courbe; double longueur; int nombre_de_lignes; int mem_alloue; Vector4 *equation_plan; }; Courbe_de_niveau *tableau_des_courbes; // contient dans chacune de ses cases les informations sur une courbe de niveau public: CCourbes_de_niveau(); virtual ~CCourbes_de_niveau(); void Calcul_des_courbes(Model *model_recu, bool from, double heigh); void Traiter_courbes(int num_courbe, double heigh); void Remplir_tableau_des_courbes(int num_courbe, Vector4 plan); void Calcul_plan_de_coupe(Model *model_recu); void Dessiner_courbes_de_niveau(); void Dessiner_figure_coupee_par_plan(); void Liberer_memoire_courbes_niveau(); }; #endif // !defined(AFX_COURBES_DE_NIVEAU_H__BE465260_1823_4854_9F41_96EC4D5B570C__INCLUDED_)
voici le Model.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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 // Courbes_de_niveau.cpp: implementation of the CCourbes_de_niveau class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "Osiris.h" #include "Courbes_de_niveau.h" #include "CourbesDlg.h" // boite de dialogue #include "OsirisDoc.h" #include "OsirisView.h" #include "Model.h" // contient un modele d'objet 3D #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif class Model; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CCourbes_de_niveau::CCourbes_de_niveau() { tableau_des_courbes = NULL; } CCourbes_de_niveau::~CCourbes_de_niveau() { } . . . la suite est surement sans importance
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 // Model.h: interface for the Model class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_MODEL_H__C2B5528B_1F02_4B8C_AD12_59F475730504__INCLUDED_) #define AFX_MODEL_H__C2B5528B_1F02_4B8C_AD12_59F475730504__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include <algorithm> #include <deque> #include <vector> #include <set> #include "image.h" #include "Quadric3.h" #include "vector3.h" #include <GL\gl.h> #include <GL\glu.h> #include "mathematique.h" #include "Courbes_de_niveau.h" #define espace_alloue 500 class CCourbes_de_niveau; class Model { ... public: ... CCourbes_de_niveau courbes_de_niveau; // le probleme vient de cette ligne ...
voici le Model.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 // Model.cpp: implementation of the Model class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "math.h" #include "Model.h" #include "Quadric3.h" #include "glext.h" #define EPSILON 0.0005 #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// ....
Le probleme vient surement du fait que dans ma classe courbes de niveau j'ai un include Model.h car j'ai besoin d'avoir un pointeur vers un modele pour faire les operations dessus. Et dans Model.h j'ai un include vers courbe de niveau car j'y declare mon objet Ccourbes_de_niveau.
J'ai mis des :
class CCourbes_de_niveau;
et
class Model;
mais ca n'a pas l'air de regler le probleme.
J'ai deja utilise cette classe avec un autre programme et le mm entrelacement des include et ca n'avait pas pose probleme donc je ne vois pas trop ou est le probleme. Mais comme je ne m'y connait pas trop la dedans...
Quelqu'un aurait il une idee de comment regler ce probleme?
Merci d'avance
Partager