Objekte an Funktionen übergeben und diese innerhalb der Funktion verändern
-
Guten Morgen,
ich hoffe, der Titel ist nicht zu verwirrend.Es geht um einen Code der folgenden Struktur:
#include<iostream> class Blop { private: int number; public: Blop() { number = 0; } void increase() { number++; } int get_number() { return number; } }; void doit(Blop b) { b.increase(); b.increase(); } int main() { Blop b; doit(b); std::cout << b.get_number(); return 0; }Ich habe also:
- eine Klasse Blop, deren Objekte nur einen Integer besitzen, dieser wird zu Beginn 0 gesetzt und kann mittels der Funktion increase() um 1 erhöht und mit get_number() ausgegeben werden.
- eine Funktion doit(Blop b), die ein Objekt der Klasse Blop bekommt und dann increase() zweimal ausführt.Ich erzeuge ein Objekt b der Klasse Blop und führe die Funktion doit(b) aus. Dann sollte die b.number um zwei erhöht worden sein.
Unerwartetes (für mich) Resultat:
b.get_number() = 0Woran liegt das? Wie kann ich das ändern?
mfG,
Matthias K
-
Der Paramenter zur Funktion doit muss ein Zeiger oder vorzugsweise eine Referenz sein, damit er verändert werden kann.

[cpp]
void doit(Blop& b) {
b.increase();
b.increase();
}
[cpp]
-
void doit(Blop& b) { b.increase(); b.increase(); }(Ich hasse diese BB-Tags ;))
-
Hallo
Dazu gab es gerade erst eine Diskussion. Ich würde an deiner Stelle mit einem Zeiger auf die Klasse arbeiten und diesen übergeben. Ist aber Geschmackssache.
chrische