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 :
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;
Le code complet (exemple) :
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;
}
Ce code ne marche pas.

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.