Hilfe bei ersten simplen Programm mit Methoden und Klassen. Letzte frage zu Initialisierung...
-
keiner ne Idee?
Ich müsste es halt evtl außerhalb der Schleife initialisieren..
Aber wie genau schreibt man das dann? Minuten::minutentotal_=0; geht leider nicht
-
Hallo,
im Konstruktor der Minuten-Klasse minutentotal_ auf Null setzen, in Minuten::eingabe() kannst du dann die aktuell eingegebenen Minuten zu minutentotal_ addieren.
MfG,
Probe-Nutzer
-
ah ok, ich habe es jetzt mit dem Konstruktor versucht und die berechnung zu minutenTotal bei der Methode eingabe() mit bei geschrieben.
aber nach wie vor gibt er mir nicht die gesamtminuten aus sondern nur den zuletzt eingegebenen wert.
ich habe auch einen fehler in der main.cpp. dort wird seit der änderung "Instanz" rot unterstrichen mit der Meldung, dass kein Standardkonstruktor vorhanden sei.
minuten.h
class Minuten { public: Minuten(unsigned int minTotal=0); // Konstruktor void eingabe(); unsigned int get_eingabe; unsigned int berechneStunden(); unsigned int berechneMinuten(); void ausgabe(); unsigned int minTotal; ~Minuten(); private: unsigned int minuten;minuten.cpp
Minuten::Minuten(unsigned int minTotal=0) {} void Minuten::eingabe() { minuten=get_eingabe; minTotal=minTotal+get_eingabe;} unsigned int Minuten::berechneStunden() {return (minuten/60);} unsigned int Minuten::berechneMinuten() {return (minuten%60);} void Minuten::ausgabe() { cout << Minuten::berechneStunden() << ":" << setw(2) << right << setfill ('0') << Minuten::berechneMinuten() <<endl; } Minuten::~Minuten() {}main.cpp
int _tmain(int argc, _TCHAR* argv[]) { Minuten Instanz; while(1){ cout << "Geben Sie die Zeit in Minuten ein: " << endl; if (cin >> Instanz.get_eingabe) { Instanz.eingabe(); Instanz.berechneMinuten(); Instanz.berechneStunden(); Instanz.ausgabe(); } else {cout << "Eingabe beendet. Minuten Total: " << Instanz.minTotal << endl; break;} } system ("PAUSE"); return 0; }edit: komisch. jetzt ließ sich das Programm mit "unsigned int minTotal=0" (wie oben) gar nicht mehr starten weil die exe nicht gefunden wurde

habe "unsigned int minTotal=0" gelöscht, compiliert, wieder eingefügt, compliliert und jetzt gehts wieder. Instanz is auch ich mehr rot unterstrichen. Jetzt gibt er mit aber wieder 6546848644 oder so für minutenTotal aus ...
-
Hallo,
deine Variable 'minTotal' im Konstruktor ist eine andere als die der Klasseninstanz - du mußt diese erst noch initialisieren:
Minuten::Minuten(unsigned int minTotal) // der Defaultwert kann hier entfallen, da schon im Header gesetzt : minTotal(minTotal) // <- Stichwort "Initialisierungsliste" {}Alternativ kannst (und solltest du vllt. auch
die beiden Variablen unterschiedlich benennen:Minuten::Minuten(unsigned int total) : minTotal(total) // <- Stichwort "Initialisierungsliste" {}
-

wieso auf einmal 2 Variablen?
ich will doch einfach nur einen Wert nach einer Eingabe um diese Eingabe erhöhen.
in c is das doch auch nur eine kleine Codezeile... wieso muss das in c++ alles so kompliziert sein?
ok, wenn ich deins so reinkopiere geht es endlich...
nur die Zeile ": minTotal(minTotal)" ist mir nicht so ganz klar
Ich Initialisiere ↑dadrüber↑ die Variable minTotal, damit keine komischen hohen Zahlen rauskommen. Was genau macht die andere Zeile?