Rückgabe eines Ergebnisses einer Klasse
-
Ich habe einer Klasse im Konstruktor einen 2-D-Vektor übergeben. Der ist private und wird in der Klasse diversen Veränderungen unterzogen.
Nach den Berechnungen soll das Hauptprogramm sich die Werte des Vektors wieder reinziehen können.
Wie stelle ich das an? Mir fällt jetzt nur ein, einen zusätzlichen 2-D-Vektor in die public-Sektion zu stellen. In den kopiere ich dann den private-Vektor und man kann den public-Vektor auslesen.
Ist das ne gute Idee?
-
Was spricht gegen ein
DeineKlasse meinObjekt(tollerVektor); meinObjekt.machEinPaarBerechnungen(); Vektor v = meinObjekt.gibMirDasErgebnis();
Wenn aber nur Berechnung durchgeführt werden sollen könntest Du Dir vielleicht auch überlegen einfach ne Funktion zu machen. Das hängt aber vom der Art der Berechnungen ab.
MfG Jester
-
grapefruit schrieb:
Ist das ne gute Idee?
Ne. public-Elemente sind so gut wie niemals eine gute Idee.
Wie stelle ich das an?
Z.B. in dem du die Veränderungen in eine Methode packst und das Ergebnis der Veränderungen als Rückgabewert lieferst.
-
Jester schrieb:
Was spricht gegen ein
Vektor v = meinObjekt.gibMirDasErgebnis();
meiner Meinung nach soll eine (const) Reference als Rückgabe geliefert werden
-
Gut, dann versuche ich das mal, danke.
Noch eine Designfrage dazu:
Sollte man die Berechnung direkt mit der Übergabe an den Konstruktor angestoßen, oder schreibt man besser in der public-Sektion noch eine Funktion (z. B. "start" oder "calculate_go" oder sowas in der Richtung), um die Berechnung zu starten?
-
ssm schrieb:
Jester schrieb:
Was spricht gegen ein
Vektor v = meinObjekt.gibMirDasErgebnis();
meiner Meinung nach soll eine (const) Reference als Rückgabe geliefert werden
wo steht bei mir, daß es das nicht tut?
Es wird halt ne Kopie gezogen. Vielleicht will ich die ja ändern?
-
Eine Klasse kann nichts zurück geben !
Das tut eine Funktion, oder eine Membermethode.
Wenn du nur einmal was berechnest, und sonst nichts
mit der Klasse tust, wozu dient dann die Klasse ?
Währe dann eine reine Funktion nicht besser ?Devil