2012-04-03 3 views
6

Ich würde gerne wissen, wie kann ich SDL_Surface * mit shared_ptr verbinden?
Ich muss SDL_FreeSurface(SDL_Surface*) anrufen, bevor ich SDL_Surface lösche. Wie kann ich den Löschvorgang in shared_ptr ändern?"Verbinden" von SDL_Surface mit shared_ptr

Antwort

13

Nur SDL_FreeSurface an den Konstruktor:

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

Nur sicher sein, Sie dies durch SDL_SetVideoMode oder SDL_GetVideoSurface zurück mit dem Zeiger nicht tun.

+1

Warum sollten Sie das nicht mit diesen tun? (SDL_SetVideoMode etc ..) – user1511417

+3

@ user1511417: Laut [der Dokumentation] (http://www.libsdl.org/docs/html/sdlsetvideomode.html). * "Die zurückgegebene Oberfläche wird von SDL_Quit() freigegeben und sollte vom Aufrufer nicht freigegeben werden." * –