blöde frage!
-
Hi,
ich hab ein blödes designproblem aber erstmal code:
class Texture { public: Texture (void) {}; ~Texture(void) {}; }; class VideoDevice { public: virtual void CreateTexture (Texture ** out) { *out = new Texture (); } }; VideoDevice *device = new VideoDevice; // Block öffnen { Texture *texture = NULL; device->CreateTexture (&texture); } texture wurde nicht automatisch freigegeben!
was kann ich gutes machen damit texture frei gegeben wird ohne das ich schreiben muss "delete texture;" sondern automatisch frei gegeben wird.
-
Suach mal nach RAII. Smartpointer wäre ein weiteres Stichwort.
Anders Thema:
virtual void CreateTexture (Texture ** out) { *out = new Texture (); }
Sowas ehe ich in letzter Zeit ziemlich oft. Sind zeiger auf Zeiger besonders cool? Oder gibt es irgendetwas anderes, das gegen:
virtual Texture * CreateTexture () const { return new Texture (); }
spricht?
Das sieht für mich irgendwie deutlich logischer aus. Außerdem kann ich so den Zeiger auch dort definieren, wo ich ihm die Gerade erstellte Textur zuweise:Texture * texture = factoryInstance.CreateTexture ();
Was übersehe ich?
-
Nunja, ich wollte später noch einen long als rückgabewert einbauen (das void ist nur momentan und zur vereinfachung da!)
nebenbei: factory ist nicht.