Seite 1 von 1

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

Verfasst: Di Mär 31, 2015 2:33 pm
von Shortyoo
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.

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

Verfasst: Di Mär 31, 2015 3:27 pm
von mfro
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();

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

Verfasst: Di Mär 31, 2015 3:27 pm
von Xin
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

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

Verfasst: Di Mär 31, 2015 3:57 pm
von Shortyoo
Oh mein Gott^^

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

Mit freundlichen Grüßen,
Shortyoo