Bonjour, je suis en train de faire une casse brique en c++ avec la SDL.
J'ai crée deux classes permettant de représenter la raquette et la balle.
Je vais essayer d'expliquer clairement mon problème.
Dans la classe Balle, je stock un pointeur vers mon objet raquette.
Dans la classe raquette j'aimerais stocker un pointeur vers mon objet balle.
J'inclus donc Balle.h dans Raquette.h et vice versa.
Mais lorsque le compilateur compile Balle.h, il ne connait apparemment pas encore l'objet Raquette et me sort un erreur. Ci-dessous le code de ces deux classes et l'erreur du compilateur.
Raquette.h
Balle.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 #ifndef RAQUETTE_H #define RAQUETTE_H #include <SDL/SDL.h> #include "constantes.h" #include "Balle.h" class Raquette { private: Balle *balle SDL_Surface* s_raquette; SDL_Rect r_raquette; public: Raquette(); ~Raquette(); SDL_Surface* getSRaquette(); SDL_Rect getRRaquette(); void setRRaquette(int x); void closeRaquette(); }; #endif
Erreur du compilateur :
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
64
65
66 #ifndef BALLE_H #define BALLE_H #include <SDL/SDL.h> #include "Raquette.h" #include "constantes.h" class Balle { public: Balle(); Balle(Raquette* raq); SDL_Surface* getSBalle(); SDL_Rect* getRBalle(); void setRect(int x); void setStopThread(bool s_thread); SDL_TimerID getTimer(); bool getStopThread(); void closeBalle(); // La fonction statique qui sera passée en paramètre à SDL_CreateThread static int f_globalThread(void* Data) { Balle* t_balle = reinterpret_cast<Balle*>(Data); return t_balle->f_thread(); } private: SDL_Rect r_raquette; SDL_TimerID timer; SDL_Surface* s_balle; SDL_Rect r_balle; Raquette *raquette; bool stopThread; bool isOnRaq; bool monte; bool droite; void changeTrajectoire(); void changeCoordonnees(); //Fonction appelé lors du lancement du thread int f_thread(); }; #endifMerci de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 D:\psp\sdl\casseBrique\Balle.h|15|error: expected `)' before '*' token| D:\psp\sdl\casseBrique\Balle.h|48|error: ISO C++ forbids declaration of `Raquette' with no type| D:\psp\sdl\casseBrique\Balle.h|48|error: expected `;' before '*' token| ||=== Build finished: 3 errors, 0 warnings ===|
Partager