C++ Additonsoperator wird nicht anerkannt..

Abcd12345

Lt. Junior Grade
Registriert
März 2006
Beiträge
483
Follgende Fehlermeldung bekomme ich:

C:\Program Files\Microsoft Visual Studio\MyProjects\fafafaava\vavava.cpp(24) : error C2059: Syntaxfehler : '+='
Fehler beim Ausführen von cl.exe.

Code:
#include <iostream>

using namespace std;

// Prototyp
 void bla (int *blabla, int bonus);

int main ()
{
	//vari
	int life = 0;
	int lifeadd = 100;

	bla (&life, lifeadd);

	cout << life << endl;

	return 0;

}

void bla (int *blabla, int bonus)
{
	blabla* += bonus;
}

Ich wüsste nicht , wo mein Fehler ist...
 
Versuch's mal so:

Code:
void bla (int *blabla, int bonus)
{
	*blabla += bonus;
}

In C++ würde es sich an dieser Stelle anbieten Referenzen anstelle von Zeigern zu verwenden, dann kannst du dir nämlich den Dereferenzierungsoperator sparen:

Code:
void bla (int &blabla, int bonus)
{
	blabla += bonus;
}

Aufgerufen wird das dann mit bla (life, lifeadd);
 
Hi,

Ich bin jetzt einen Absatz von der Erklärung zu den Referenzen entfernt und wollte vorher aber nochmal den Umgang mit Zeigern üben.

Anscheinend habe ich das auch nötig bei dem Fehler.. Ich hab mit die Zeile 100x angeguckt aber nicht bemerkt das der Stern an der falschen Stelle ist...

Achja noch ne Frage: Das "void" kann ich mir doch eigentlich auch sparen, da ich nur eine Addresierung weitergebe und keinen Wert oder?
 
Der Rückgabetyp muss afaik immer dabeistehen. Und wenn du nichts zurckgibst eben void.
 
Die Frage kannst du dir leicht selber beantworten.
Was wäre nämlich, wenn du mit
Code:
Funktion()
{
int Integer;
};
deine Funktion deklarierst? Du rufst die Funktion auf und der Compiler sucht nach der Funktion "Funktion", die aber nirgends deklariert ist.

Anders verhält es sich bei Klassen. Dort kannst du den Rückgabe-Typ weglassen, weil innerhalb einer Klasse ja sowieso keine Funktionen ausgeführt werden können. Der Rückgabetyp ist dann automatisch void.

Ich würde aber generell kein void verwenden. Wenn du den Rückgabewert nicht für deinen Programmablauf brauchst, nimm bool und benutze ihn als Fehleranzeige. Benutzen muss man ihn ja nicht aber wenn mans braucht isses schon drin.

Das void bei nicht vorhandenen Funktionsparametern brauchst du nicht zu setzen, ist nur unnötige Schreibarbeit.
 
Zurück
Oben