Konsolenprogramm gibt keinen bzw. falschen Wert aus...
-
Der Doppelpunkt ist der so genannte Elementinitializer. Der initialisiert bei der "Konstruktion" einer Instanz deiner Klasse die angegebenen Elemente.
Einfügen sollst du es genau so, wie es dasteht.
Ansonsten Googeln, zu dem wurde schon viel geschrieben.MfG
GPC
-
irgendwie klappts nich...mich irritiert die geschweifte Klammer das GetZaehlerstand und so bleibt aber?
-
"klappt nicht" ist doch keine sinnvolle Fehlerbeschreibung. Der Code sollte so funktionieren.
-
Konrad Rudolph schrieb:
"klappt nicht" ist doch keine sinnvolle Fehlerbeschreibung. Der Code sollte so funktionieren.
class Zaehler { private: int Zaehlerstand; public: { Zaehler() :Zaehlerstand (0); int GetZaehlerstand(void) {return Zaehlerstand;} void SetZaehlerstand (int Wert); void Zaehlerrunter (void); void Zaehlerhoch(void); };So is es nicht richtig..zumindest werden Fehlermeldungen ausgegeben...
-
Was habe ich falsch gemacht?
-
Du hast nicht den Code von Hazzel genommen. Bei ihm sieht es nach dem public wie folgt aus:
Zaehler() : Zaehlerstand(0) { //in diesem Fall alternativ auch //Zaehlerstand = 0; }Bei dir sieht es so aus:
{ Zaehler() :Zaehlerstand (0);Sieht ganz anders aus, richtig?
-
ja, aber funktioniert immer noch nich...
irgendwo is der Wurm drin...und es liegt wahrscheinlich an den geschweiften Klammern...
-
Dann zeig doch einfach mal deinen _aktuellen_ Code.
-
#include <iostream> #include <conio.h> using namespace std; class Zaehler private: int Zaehlerstand; public: Zaehler() : Zaehlerstand(0) { int GetZaehlerstand(void) {return Zaehlerstand;} void SetZaehlerstand (int Wert); void Zaehlerrunter (void); void Zaehlerhoch(void); } }; void Zaehler::SetZaehlerstand(int Wert) { Zaehlerstand = 0; } void Zaehler::Zaehlerhoch(void) { Zaehlerstand = Zaehlerstand + 1; } void Zaehler::Zaehlerrunter(void) { Zaehlerstand = Zaehlerstand - 1; } int main() { Zaehler zaehler1; cout << " Zaehlerstand: " << zaehler1.GetZaehlerstand() << endl; zaehler1.Zaehlerhoch(); cout << "Zaehlerstand: " << zaehler1.GetZaehlerstand() <<endl; getch(); return 0; }
Ich denke, so meinte er es, oder?
-
Nein, er meint es so:
#include <iostream> //#include <conio.h> conio ist compilerspezifisch, also weg damit using namespace std; //Man beachte die öffnende geschweifte Klammer class Zaehler { //das braucht's nicht, in class ist eh alles per default private //private: int Zaehlerstand; public: //Konstruktordefinition machen wir mal hier, ist ja auch nur 'ne "Methode", 'ne spezielle zwar, aber egal. Zaehler() : Zaehlerstand(0) { } //Restliche Methoden, die mach ich alle inline, weil's so kurze sind. int GetZaehlerstand() { return Zaehlerstand; } void SetZaehlerstand (int Wert) { Zaehlerstand = Wert; } void Zaehlerrunter() { --Zaehlerstand; } void Zaehlerhoch() { ++Zaehlerstand; } }; int main() { Zaehler zaehler1; cout << " Zaehlerstand: " << zaehler1.GetZaehlerstand() << endl; zaehler1.Zaehlerhoch(); cout << "Zaehlerstand: " << zaehler1.GetZaehlerstand() <<endl; cin.get(); //getch() ist nicht portabel return 0; }MfG
GPC
-
Und mal zur Erklärung: Auch wenn nichts dort drin steht - die Klammern bei der Ctor-Definition sind wichtig. Der Konstruktor ist eine (fast) normale Methode und benötigt deshalb auch einen Methodenrumpf. Und wenn, wie in diesem Beispiel alle nötigen Aktionen von der Initialisierungsliste übernommen werden, bleibt ein leerer Rumpf (also nur noch die
{ }Klammern) übrig.
-
ROFL.

Also, wie jemand es schafft, 3mal Copy&Paste falsch zu machen, finde ich schon erstaunlich !!Ein schöner "Montagmorgen-Aufheller",
Simon2.