Auf Klassenelemente zugreifen
-
# include <iostream> using namespace std; class daten { public: int x; int y; int z; daten(); void eingabe(); void ausgabe(); }; daten::daten() { x=0; y=0; z=0; } void daten::eingabe() { cout << "x: "; cin >> Testwert.x; cout << "y: "; cin >> Testwert.y; cout << "z: "; cin >> Testwert.z; } void daten::ausgabe() { cout << "Bin in der Ausgabe-Methode" << endl; } int main() { daten Testwert; int ein=0; cout << "Eingabe:"; cin >> ein; if (ein==1) {Testwert.eingabe();} if (ein==2) {Testwert.ausgabe();} //TESTWERTE Ausgeben cout << Testwert.x << Testwert.y << Testwert.z; };Warum bekomme ich Fehlermeldungen?
Fehlermeldungen:
Ein Beispiel:
error C2065:'Testwert': nichtdeklarierter Bezeichner
error C2228: Links von ".x" muss sich eine Klasse/Struktur/Union befinden.
entsprechend für y und z auch.Wie greife ich auf die Klassenelemente x,y,z zu?
Ich dachte vielleicht gibt es Probleme mit Zeile 51, weil ich einmal "allgemein" auf die Methode zugreife und dann auf die Klassenelemente, also versuchte ich main so umzugestalten:
int main() { daten Testwert; daten nurrein; int ein=0; cout << "Eingabe:"; cin >> ein; if (ein==1) {nurrein.eingabe();} if (ein==2) {Testwert.ausgabe();} //TESTWERTE Ausgeben cout << Testwert.x << Testwert.y << Testwert.z; };Sind genauso dieselben Fehler.
Für euch Spezialisten ist das sicher ein klax. Mir konnten drei Bücher nicht weiterhelfen. Bitte um Hilfe.
Wie greife ich auf die Klassenelemente zu?VIELEN DANK!
-
Hi
Bei der Fehler meldung geht es um:
void daten::eingabe() { cout << "x: "; cin >> Testwert.x; cout << "y: "; cin >> Testwert.y; cout << "z: "; cin >> Testwert.z; }hier ist niergends Testwert definiert.
Ich denke du meinst:void daten::eingabe() { cout << "x: "; cin >> x; cout << "y: "; cin >> y; cout << "z: "; cin >> z; }Gruß
-
Ich will aber, dass alles in der Variable "Testwert" abgespeichert wird.
Für mein eigentliches Programm habe ich dann einen Haufen an Variablen und Klassenelemente.
-
Ich glaube, ich habe es geschafft, einfach so probiert.
# include <iostream> using namespace std; class daten { public: int x; int y; int z; daten(); void eingabe(); void ausgabe(); }Testwert; daten::daten() { x=0; y=0; z=0; } void daten::eingabe() { cout << "x: "; cin >> Testwert.x; cout << "y: "; cin >> Testwert.y; cout << "z: "; cin >> Testwert.z; } void daten::ausgabe() { cout << "Bin in der Ausgabe-Methode" << endl; } int main() { // daten Testwert; int ein=0; cout << "Eingabe:"; cin >> ein; if (ein==1) {Testwert.eingabe();} if (ein==2) {Testwert.ausgabe();} //TESTWERTE Ausgeben cout << Testwert.x << Testwert.y << Testwert.z; };Zeile 15 eingefügt.
Passt doch, oder?
-
Ich denke eher nicht, wo wird denn deine Klasse Daten erstellt? Liess doch bitte lieber ein totorial erstmal durch, bevor du mit Probieren drauf los gehst.
Wenn du in deiner Funktion e3ingabe das Testwert weg lässt is das der selbe zugriff, da eingabe eine Funktion der Klasse Daten ist und somit zugriff auf die Variablen hat.
-
Ich glaube du hast noch was nicht ganz verstanden.
Oder ich nicht was du willst.Was willst du denn erreichen ?
Jetzt hättest du eine "globale" Variable mit Testwert angelegt.
Auf die du von überall zugreifen kannst. Aber willst du das auch wirklich und wozu ??Gruß