Zugriff auf Array einer Klasse mit set- und get Methoden
-
Hallo erst einmal, da dies mein erster Beitrag in diesem Forum ist. Da ich bisher meine Probleme mit dem Programmieren in C++ hatte, habe ich beschlossen mich in den Ferien etwas näher damit auseinanderzusetzen.
Im Moment bin ich beim Thema Arrays angelangt und habe mir hierzu ein kleines eigenes Beispiel ausgedacht, an welchem ich üben wollte, wie das Zusammenspiel von set- und get Methoden und einem Array innerhalb einer Klasse funktioniert. Hier kommt es zum Problem, dass meine get-Methode nicht wirklich das tut was sie soll oder vielleicht auch der völlig falsche Ansatz für das ist, was ich von ihr erwarte. Die get-Methode bekommt einen integer-Wert als Parameter übergeben und soll mit der Hilfe von diesem, den Wert des Arrays an der entsprechenden Stelle zurückgeben, doch dies passiert nicht. Ein wirkliches Beispiel dafür konnte ich auch in anderen Foren/FAQs/Videos nicht finden. Deshalb wäre ich sehr dankbar für Vorschläge oder Denkanstöße die dieses Problem lösen können. Anbei der Quelltext:
#include <iostream> using namespace std; class ErsteZehnZahlen { public: ErsteZehnZahlen(); void set_Zahlen(int m, int n); int get_Zahlen(int p); private: int ZehnZahlen[10]; }; ErsteZehnZahlen::ErsteZehnZahlen() { int i; for(i = 0; i <=9; i++) { ZehnZahlen[i] = 0; } } void ErsteZehnZahlen::set_Zahlen(int a, int b) { ZehnZahlen[a] = b; } int ErsteZehnZahlen::get_Zahlen(int c) { return ZehnZahlen[c]; } int main() { int a = 1; int b = 6; int c = 1; ErsteZehnZahlen Objekt; Objekt.set_Zahlen(a,b); Objekt.get_Zahlen(c); return 0; }
Mit freundlichen Grüßen, ein C++ Anfänger.
-
Ich seh nicht, wo in deinem Code du den Rückgabewert deiner get-Methode auffängst. Inwiefern "passiert" es denn nicht; wie hast du überprüft ob "es passiert"?
-
Hallo und danke für die Antwort. Meine Erwartung wäre gewesen, dass nach Ausführung des Programms mir die get-Methode den Wert 6 zurückliefert und dieser auch in der Konsole angezeigt wird. Diesen habe ich ja mit der set-Methode in mein Array geschrieben. Doch es wird gar nichts ausgegeben, weshalb es wohl ein Problem mit der get-Methode in ihrer jetzigen Form gibt.
Edit: Meinst du mit auffangen etwa das hier? Denn das würde mir den erwarteten Wert 6 zurückliefern.
cout << Objekt.get_Zahlen(c);
-
Raw schrieb:
Hallo und danke für die Antwort. Meine Erwartung wäre gewesen, dass nach Ausführung des Programms mir die get-Methode den Wert 6 zurückliefert und dieser auch in der Konsole angezeigt wird.
Du hast nirgendwo hingeschrieben, dass der Rückgabewert in der Konsole ausgegeben werden soll, wieso sollte das Programm das also machen!?
Raw schrieb:
Diesen habe ich ja mit der set-Methode in mein Array geschrieben. Doch es wird gar nichts ausgegeben, weshalb es wohl ein Problem mit der get-Methode in ihrer jetzigen Form gibt.
Nö, mit der Methode selbst ist alles völlig in Ordnung.
Raw schrieb:
Edit: Meinst du mit auffangen etwa das hier? Denn das würde mir den erwarteten Wert 6 zurückliefern.
cout << Objekt.get_Zahlen(c);
Der Aufruf dieser Methode liefert immer deinen Wert 6 zurück. Wenn du aber nur schreibst
Objekt.get_Zahlen(c);
Dann liefert die Methode zwar 6 zurück, der Rückgabewert wird aber weggeworfen...
-
Hey, danke erst einmal für das eingehen auf den Post von mir vorher. Das ganze zeigt mir, dass ich mich erst einmal wirklich damit befassen sollte, was der return-Wert eigentlich macht und wo seine Funktion liegt, denn das scheint mir nach deinen Antworten noch nicht wirklich klar zu sein. Vielen Dank für die Hilfe!
-
Raw schrieb:
Hey, danke erst einmal für das eingehen auf den Post von mir vorher. Das ganze zeigt mir, dass ich mich erst einmal wirklich damit befassen sollte, was der return-Wert eigentlich macht und wo seine Funktion liegt, denn das scheint mir nach deinen Antworten noch nicht wirklich klar zu sein. Vielen Dank für die Hilfe!
Stell dir ein return Wert einfach so vor:
Deine Funktion:int ErsteZehnZahlen::get_Zahlen(int c) { return ZehnZahlen[c]; // return by value erzeugt immer eine temporäre Variable ==> der return Wert. } int zahl = Objekt.get_Zahlen(c); // Den return Wert abspeichern. // Den return Wert kannst du nun im weiteren Programmverlauf verarbeiten.
Das ist praktisch das Gleiche wie dieses einfache Programm:
int main() { int ZehnZahlen[10] = {0,1,2,3,4,5,6,7,8,9}; int temporaere_variable = ZehnZahlen[1]; // Ist sozusagen dein return ZehnZahlen[c] int return_wert_speichern = temporaere_variable; // Den return Wert abspeichern. // Den return Wert kannst du nun im weiteren Programmverlauf verarbeiten. }
-
Danke für dieses Quelltextbeispiel, das ganze ist mir nun deutlich geworden und nun ist mir auch klar was dot weiter oben mit "auffangen" meinte. Danke an euch beide!