2012-04-03 16 views
6

Chciałbym wiedzieć, jak połączyć SDL_Surface * z shared_ptr?
Muszę zadzwonić pod numer SDL_FreeSurface(SDL_Surface*), zanim usuniemy SDL_Surface. Jak mogę "zmodyfikować proces usuwania" w shared_ptr?"Podłączanie" SDL_Surface do shared_ptr

Odpowiedz

13

Wystarczy przejść SDL_FreeSurface do konstruktora:

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

Wystarczy mieć pewność, że nie robią tego ze wskaźnikiem zwróconym przez SDL_SetVideoMode lub SDL_GetVideoSurface.

+1

Dlaczego nie powinieneś zrobić tego z tymi? (SDL_SetVideoMode itp.) – user1511417

+3

@ user1511417: Zgodnie z [dokumentacją] (http://www.libsdl.org/docs/html/sdlsetvideomode.html). * "Zwrócona powierzchnia jest zwalniana przez funkcję SDL_Quit() i nie powinna być zwalniana przez osobę dzwoniącą." * –