prinzipielles Problem zur Lebensdauer
-
Hallo,
ich möchte eine Funktion schreiben, die mir eine Matrix mit zufälligen Inhalten erzeugt, sagen wir randM().
Ich kann die Methode aber schlecht einen Pointer auf ein neu erzeugtes Objekt vom Typ Matrix zurück geben lassen, weil dieses eben nach der Ausführung meiner Methode randM gelöscht wird.Matrix *randM(){ Matrix m; //tu irgendwas um m zu füllen return &m; }
funktioniert natürlich nicht.
Die zweite Methode, die Matrix zu kopieren ist zum einen aufwändig und funktioniert auch nicht, weil ich in meiner Klasse einen Pointer auf meine
Matrix speichern will.Matrix randM(){ Matrix m; //m füllen return m } main(){ Matrix *m m = &randM(); }
geht auch nicht. Wie mache ich es richtig ?
PS: ich hab versucht das zu googeln, aber wonach suchen...?
-
Noch nie was vom Operator 'new' gehört?
Es gibt zwei Möglichkeiten für deine Funktion:
//1.: operator new; delete (außerhalb der Funktion) nicht vergessen! Matrix* randM() { Matrix *m = new Matrix(); //code... return m; } //2.: Referenz void randM(Matrix& m) { //code.. }
-
thx
-
Und wenn du new verwendest, dann delete nicht vergessen. Oder gleich einen Smart-Pointer als Rückgabewert verwenden.