Fehler bei Show_
-
So, bin jetzt auf C++ umgestiegen...
Finde aber meinen Fehler nicht... Der Compiler sagt mir... ach, ich zeigs euch einfach:
#include <iostream> #include <conio.h> using namespace std; class Krieger { // variablen // public : char name[30]; int ikraft; int ileben; bool waffe; bool zustand; //Funktionen// public : void attack(); void callname(); void drive(); //Setvariablen void set_leben() { cout<<"Gebe das Leben deines Kriegers ein!"<<endl; cin>> ileben; }; void set_kraft() { cout<<"Gebe die Kraft deines Kriegers ein!"<<endl; cin>> ikraft; }; void set_name(); void set_waffe(); void set_zustand(); }; //ShowFunktion// void show_leben(){ cout<<"Das Leben deines Kriegers ist: "<< leben <<endl; } void show_kraft(){ cout<<"Die Kraft deines Kriegers ist: "<< kraft <<endl; } int main() { Krieger Malarkey; Malarkey.show_leben(); Malarkey.show_kraft(); getch(); return 0; }FEHLER:
1>------ Erstellen gestartet: Projekt: dgg, Konfiguration: Debug Win32 ------ 1>Kompilieren... 1>Kriegr.cpp 1>c:\users\sebastian\desktop\cpp2\dgg\kriegr.cpp(48) : error C2065: 'leben': nichtdeklarierter Bezeichner 1>c:\users\sebastian\desktop\cpp2\dgg\kriegr.cpp(51) : error C2065: 'kraft': nichtdeklarierter Bezeichner 1>c:\users\sebastian\desktop\cpp2\dgg\kriegr.cpp(60) : error C2039: 'show_leben': Ist kein Element von 'Krieger' 1> c:\users\sebastian\desktop\cpp2\dgg\kriegr.cpp(8): Siehe Deklaration von 'Krieger' 1>c:\users\sebastian\desktop\cpp2\dgg\kriegr.cpp(61) : error C2039: 'show_kraft': Ist kein Element von 'Krieger' 1> c:\users\sebastian\desktop\cpp2\dgg\kriegr.cpp(8): Siehe Deklaration von 'Krieger' 1>Das Buildprotokoll wurde unter "file://c:\Users\Sebastian\Desktop\cpp2\dgg\Debug\BuildLog.htm" gespeichert. 1>dgg - 4 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Wie soll ich den leben und kraft weiter deklarieren?
Liebe Grüße,
-
Malarkey schrieb:
Finde aber meinen Fehler nicht...
1>c:\users\sebastian\desktop\cpp2\dgg\kriegr.cpp(48) : error C2065: 'leben': nichtdeklarierter BezeichnerDu hast eine Variable "ileben", nicht "leben" deklariert.
Davon abgesehen...
... ist die ungarische Notation nicht mehr üblich.
... sind Einrückungen sinnvoll für die Leser.
... würde ich statt einem char[] ein std::string (Header <string>)empfehlen.Und für die Zukunft (sobald du auch Deklaration und Definition in Header/Source trennst: using namespace sehr vorsichtig einsetzen - Niemals im Header, und immer nach allen Includes).
-
Und dann solltest du für die beiden Methoden noch die Zugehörigkeit zur Klasse herstellen

-
Ugarische Methode? Kann leider nichts damit anfangen... Und Fehler ist immer noch vorhanden.
Denke mal das Dweb die Lösung hat aber ich weiß nicht wirklich was er (du
) mein(s)t
-
Ah habs! Hab die Klasse Krieger zu früh geschlossen!!!
Danke für eure Hilfe

-
Malarkey schrieb:
Ugarische Methode? Kann leider nichts damit anfangen
Die Ungarische Notation beschreibt Methoden, wie man Variablen und Funktionen usw. bennenen sollte. Diese Notation löst aber bei den meisten ein Erbrechen aus.
Malarkey schrieb:
Denke mal das Dweb die Lösung hat aber ich weiß nicht wirklich was er (du
) mein(s)tJoa, in deinem Fall hatten die beiden Methoden nichts mit der Klasse am Hut, wodurch dann natürlich nicht auf die Attribute der Klasse zugreifen konntest.
Eine Zugehörigkeit kannst du auf 2 Arten herstellen

class Foo { /* Methode innerhalb der Klasse definieren. */ void moeglichkeit_1() { } /* Methode innerhalb der Klasse deklarieren... */ void moeglichkeit_2(); }; /* ...und sie außerhalb der Klasse definieren. */ void Foo::moeglichkeit_2() { } int main() { return 0; }mfg dweb