Wie kann ich eine Klasse als Parameter übergeben?
-
JoergL67 schrieb:
...
class stapel { ... int GR (stapel sa); ... }; ... int stapel::GR(stapel sa) { ...Das erzeugt eine lokale Kopie, alternativ kannst Du auch eine Referenz übergeben (
GR (stapel& sa);besser eine const-ReferenzGR (stapel const& sa);).
Insgesamt:
A) ini(t)-Funktion ist schlecht, richtig wäre ein Konstruktor
const-correctness solltest Du gleich mit bedenken: Wenn eine Memberfunktion das Objekt nicht verändert, sollte sie const deklariert sein:int GR(....) const;und wenn eine Funktion ihren Parameter nicht verändert sollte sie diesen const deklarieren:
int GR(stapel const& ...)C) Was Deine GR()-Funktion macht, scheint mir seeeeehr "ungewöhnlich" zu sein:
1.) Ich hätte erwartet, dass eine Memberfunktion namens "GR(össe)" die Größe des aktuellen Objekts zurückgibt (so wie "size()" bei string und vector) ... und nicht die eines anderen Objekts
2.) Ansonsten tut's eine freie Fnuktion (besser)
3.) was die Implementierung ("sa.top()...") mit der Beschreibung zu tun hat, ist mir gerade nicht klar.
D) Du wirst vermutlich bald zu den Punkt kommen, die Größe von "daten" zu verändern; wenn Du daraus gleich einen std::vector<int> machst (s.a. cppreference.com), hast Du das gleich einfach, sicher,standardisiert, ... mitgeliefert.Gruß,
Simon2.
-
Naja siehs mal so, die staplehöhe definierst du ja nie, du setzt die feldwerte intern nie auf null also könnten man auch nicht auf != Null hochzählen wieviel drinne ist und wenn du vom einen stapel wissen willst wie groß der andere ist musst du stapel übergeben, so wie ichs gezeigt hab geht das. ( eine möglichkeit von mehreren )
//Edit: schade simon kam mir zuvor

-
Ähm Danke erstmal.

Muss Eure Tipps erstmal ausprobieren. Auf jeden Fall ist das Prog schon mal lauffähig.
Was macht sa->top(); denn?
Der Pfeil ist mir noch gar nicht geläufig.
-
Scheiße, lesen müsste man können.
Für den Größenvergleich darf ich sogar eine einfache Funktion verwenden. Und ich versuch die ganze Zeit die Funktion als Memberfunktion in die Klasse reinzukriegen
-
-> Was macht sa->top(); denn?
-> dereferenziert den zeiger und wendet den . aufs object an, ausgeschriebene form: (*Objekt).Methode();
-
Ein Dankeschön an alle, insbesondere auch an Simon für die "Extras"

-
Wikinger75 schrieb:
... instalieseiren.
Geiles Wort

SCNR!
-
Das ist wie pumuckls geile Signatur
die hat er auch von einem User der da ein paar Buchstaben durcheiander gewurfen hat.
-
Spielst du auf diesen Thread an?

pumuckl hat inzwischen aber eine andere Signatur...Du könntest bei dir die For-Schleife auch ohne Abstände schreiben, nämlich so: for(;;).

-
Ja das war der Thread, ich hab die "for"-ever aus Schönheitsgründen so gestaltet :p