Run-Time Check Failure#3 - The variable is being used...

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Shortyoo
Beiträge: 17
Registriert: Di Feb 17, 2015 9:55 pm

Run-Time Check Failure#3 - The variable is being used...

Beitrag von Shortyoo » Di Mär 31, 2015 2:33 pm

Hallo C++ Gemeinde!

Habe hier ein kleines Problem:

Main:

Code: Alles auswählen

int main(){InitE();}
void InitE(){
	cout << "InitE:" <<endl<<endl<<endl;
	int Geld, Geld1;
	Geld=(rand()%250)+5000; // Zufällige zwischen 5000 und 5250
	cout<<Geld<<endl<<endl;
	Mark.setGeld(Geld);
	Mark.addGeld(1000);
	Mark.getGeld(Geld1);
	cout << Geld1<<endl<<endl;
	Mark.setEnc(1);
	Mark.setFir(1);
	Mark.setDec(false);
	Mark.setByp(false);
	Mark.setDat("Name: Mac");
	Mark.setBDat(false);
	Game();
}
Header:

Code: Alles auswählen

class Person{
	private:
		int Geld;
	public:
		void setGeld(int set){Geld=set;}
		int getGeld(int Money){return Geld;}
		void addGeld(short amount){amount+=Geld;}

	friend class Konto;
}Mark, Mac;
Folgendes Problem:
Beim compile Vorgang gibt es eine Probleme, während der Laufzeit (also direkt beim Start), ploppt ein Warnungs Fenster mit folgendem Inhalt hervor:
Run-Time Check Failure #3 - The variable 'Geld1' is being used without being initialized.
Gemeint ist damit diese Zeile:

Code: Alles auswählen

Mark.getGeld(Geld1);
Aber warum ist das so?
In der Funktion der Klasse Person steht doch deutlich drin:

Code: Alles auswählen

int getGeld(int Money){return Geld;}
Warum kommt es zu diesem Fehler?

Danke im Voraus! :)

Mit freundlichen Grüßen.

mfro
Beiträge: 346
Registriert: Mi Jan 16, 2013 4:58 pm

Re: Run-Time Check Failure#3 - The variable is being used...

Beitrag von mfro » Di Mär 31, 2015 3:27 pm

Die Runtime-Library hat Recht. Das hätte auch - bei entsprechend eingeschalteten Warnungen - der Compiler schon merken müssen.

Schau' dir mal deine Funktionen genau an.

Deine Member-Funktion "getGeld(int Money)" macht mit dem Parameter Money nix. Drum hat ihn der Compiler höchstwahrscheinlich wegoptimiert.

Was Du (wahrscheinlich) eigentlich haben wolltest, ist:

Code: Alles auswählen

  Geld1 = Mark.getGeld();
It's as simple as that. And remember, Beethoven wrote his first symphony in C.

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Run-Time Check Failure#3 - The variable is being used...

Beitrag von Xin » Di Mär 31, 2015 3:27 pm

Shortyoo hat geschrieben: Folgendes Problem:
Beim compile Vorgang gibt es eine Probleme, während der Laufzeit (also direkt beim Start), ploppt ein Warnungs Fenster mit folgendem Inhalt hervor:
Run-Time Check Failure #3 - The variable 'Geld1' is being used without being initialized.
Gemeint ist damit diese Zeile:

Code: Alles auswählen

Mark.getGeld(Geld1);
Aber warum ist das so?
Die Methode getGeld( int ) verlangt einen Integer als Parameter. Der Parameter wird in die Methode hineinkopiert, aber sie ist noch nicht initialisiert. Welchen Wert soll er denn da rein kopieren, Geld1 wurde ja nie beschrieben.

Was Du tun willst ist Geld auslesen. Dafür musst Du keine Variable reinstecken, sondern das was aus getGeld rauskommt in eine Variable speichern.

Code: Alles auswählen

Geld1 = Mark.getGeld();
Entsprechend musst Du die Signatur von getGeld so ändern, dass Du "Money" nicht übergeben musst - in der Funktion fängst Du mit der Variable "Money" ja auch nichts an.


PS: Scheiß Timing :-D
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Shortyoo
Beiträge: 17
Registriert: Di Feb 17, 2015 9:55 pm

Re: Run-Time Check Failure#3 - The variable is being used...

Beitrag von Shortyoo » Di Mär 31, 2015 3:57 pm

Oh mein Gott^^

Vielen Dank an euch beiden, jetzt klappt alles super! :)

Mit freundlichen Grüßen,
Shortyoo

Antworten