2012-04-03 6 views
6

Mi piacerebbe sapere come posso connettere SDL_Surface * con shared_ptr?
Ho bisogno di chiamare SDL_FreeSurface(SDL_Surface*) prima di eliminare SDL_Surface. Come posso "modificare il processo di cancellazione" in shared_ptr?"Connessione" SDL_Surface a shared_ptr

risposta

13

basta passare SDL_FreeSurface al costruttore:

std::shared_ptr<SDL_Surface> shared_surf(SDL_LoadBMP("foo.bmp"), SDL_FreeSurface); 

Basta essere sicuri di non fare questo con il puntatore restituito da SDL_SetVideoMode o SDL_GetVideoSurface.

+1

Perché non dovresti farlo con questi? (SDL_SetVideoMode ecc.) – user1511417

+3

@ user1511417: Come da [la documentazione] (http://www.libsdl.org/docs/html/sdlsetvideomode.html). * "La superficie restituita viene liberata da SDL_Quit() e non dovrebbe essere liberata dal chiamante." * –