Bonjour !
Je rencontre un problème quand je veux "encapsuler" mes surfaces (comme la surface de la fenêtre) dans des structures.
J'ai deux structures :
Le code complet (exemple) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 typedef struct { SDL_Surface *Perso, *Ennemi; } Exemple2; typedef struct { SDL_Surface *Ecran; Exemple2 *Ex2; } Exemple1;
Ce code ne marche pas.
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 #include <SDL/SDL.h> typedef struct { SDL_Surface *Perso, *Ennemi; } Exemple2; typedef struct { SDL_Surface *Ecran; Exemple2 *Ex2; } Exemple1; void Exemple1_InitialiserFenetre(Exemple1 *this) { this->Ecran = SDL_SetVideoMode(640,480,32, SDL_HWSURFACE); } void Exemple2_InitialiserChamps(Exemple1 *this) { this->Ex2->Perso = SDL_CreateRGBSurface(SDL_HWSURFACE, 25, 25, 32, 0,0,0,0); this->Ex2->Ennemi = SDL_CreateRGBSurface(SDL_HWSURFACE, 25, 25, 32, 0,0,0,0); } int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_VIDEO); Exemple1 *p = NULL; Exemple1_InitialiserFenetre(p); Exemple2_InitialiserChamps(p); SDL_Quit(); return 0; }
Je sais qu'il faut modifier un pointeur sur SDL_Surface donc il me faut un pointeur sur le pointeur de la SDL_Surface. Mais quand c'est imbriqué dans une structure (voir plusieurs), j'en ai aucune idée.
J'ai déjà essayé beaucoup de choses, mais je vois pas. :/
Merci pour votre aide.
Kr00pS
PS: Obligé de coder en C, en C++ j'aurais pu utiliser une référence, ce qui aurait simplifier la chose mais bon.
Partager