J'apprends à créer des applications C++ en utilisant la bibliothèque SDL2 et j'ai rencontré un problème en essayant d'organiser mon code.Comment passer correctement un pointeur vers une fonction en C++ pour une autre fonction opérant directement sur ce pointeur?
Voici un exemple simple ilustrating la situation:
void createWindow (SDL_Window *gameWindow)
{
gameWindow = SDL_CreateWindow(/* arguments here */);
}
int main (int argc, char* argv[])
{
SDL_Window* gameWindow = NULL;
createWindow(gameWindow);
// some code here...
}
Pourquoi ça ne marche pas? Lorsque j'essaie de compiler le code, SDL_GetError() crie: "Renderer Invalid".
Quand je fais cette façon
SDL_Window* createWindow (SDL_Window* gameWindow)
{
gameWindow = SDL_CreateWindow (/* arguments here*/);
return gameWindow;
}
cela fonctionne. Mais je ne l'aime pas comme ça. Je ne comprends peut-être pas quelque chose au sujet des pointeurs ou de la façon dont fonctionne SDL2, mais je pensais que passer à la fonction me permettait de travailler directement sur les variables, donc je n'ai rien à retourner. Pour moi, il semble que je travaillais sur la copie de l'adresse de la variable, mais pas la variable elle-même.
Qu'en est-: 'SDL_Window * createWindow() {return SDL_CreateWindow (/ * arguments ici * /); } ' –
Vous modifiez la copie du pointeur' createWindow'. – Michael
Même si vous ne l'aimez pas, la plupart des gens préféreraient simplement renvoyer le pointeur ici. Notez que la fonction SDL le fait aussi. – emlai