Zeiger(Heap) als Rückgabewert
-
Ich erstelle in einer Methode eine Instanz auf dem Heap einer Fremden Klasse.
class Foo{ Object* newObject(){ Object *o = new Object(...); //initialize with Foo specific values return o; }
Dieser Schnipsel hat den Nachteil das ich ein Objekt erzeuge und der Aufrufer dieses später selbstständig wieder freigeben muss. Da ich noch unerfahren mit dem Design von größeren C++ Projekten bin, wollte ich Euch fragen, ob das schlechtes Design ist oder eher gängige Praxis.
Falls es dafür bessere Lösung gibt, welche wären das? Mir fallen da spontan nur Auto-Pointer ein.
-
Eine bessere Lösung ist es auf jeden Fall, statt reiner Pointer einen Smart-Pointer (std::auto_ptr oder noch besser bosst::shared_ptr) zu übergeben - die kümmern sich selber um's Aufräumen.