Problèmes d'inclusion entre deux classes
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
Code:
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 |
Balle.h
Code:
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();
};
#endif |
Erreur du compilateur :
Code:
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 ===| |
Merci de votre aide.