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.


Log in to reply