C++ "Funktion akzeptiert keine 1 Argumente?
Code:
int Test();
int Main() {
Test();
}
int Test() { int x = 5; int *ptr = &x; cout << ptr << endl; // Outputs Echte Adresse cout << ptr << endl; // Outputs x Wert ptr = 3000; cout << *ptr << endl; string yes; cin >> yes; if (yes == "yes") { int Wert = 5; int *ptrWert = &Wert; Rechnung(&Wert); cout << Wert << endl;
}
return 0;
}
void Rechnung(int Wert2) { Wert2 + 100 / *Wert2;
}
Fehlermeldung:
Fehler C2660 "Rechnung": Funktion akzeptiert keine 1 Argumente
Habe schon gegoogelt aber finde nur etwas mit 2 oder 0 arguments.
Danke im voraus
2 Antworten
int Main() {
soll wohl
int main() {
heissen. Für deine Funktion Test fehlt dir die Einbindung vom 'iostream' header und die Anweisung den Namespace 'std' zu verwenden.
}
return 0;
ist völlig fehl am Platz. Das return 0 gehört eigentlich am Ende in die main. Es ist kein Fehler das return 0 weg zu lassen, erzeugt aber eine unnötige Warnung.
Nun zum eigentlich erfragten Fehler:
Wert2 + 100 / *Wert2;
der Fokus liegt auf dem / * entscheide dich ob du nun multiplizieren oder dividieren willst. Du solltest an der Stelle auch noch Klammern setzen um Missverständnisse bei der Rechnung auszuschliessen.
Hinzu kommt, dass das so keinen Sinn ergibt. Du rechnest etwas, sagst aber C++ nicht was nun mit dem Ergebnis passieren soll.
PS: der Prototyp für deine void Rechnung fehlt.
Deine Funktion Test(int) ist unvollständig. Es wird ein return erwartet. Wenn du nichts zurückgeben möchtest, dann nutze void.
Da fehlt ein Prototyp für die Funktion Rechnung. Der Compiler weiß zu dem Zeitpunkt, zu dem er Test kompiliert, noch gar nicht, wie die Funktion Rechung aussieht.
In diesem einfachen Fall würde es auch reichen, die beiden Funktionsdefinitonen in der anderen Reihenfolge hinzuschreiben. Also erst Rechnung, dann Test
Nur ergänzend:
Ein echter Prototyp hat keine Parameternamen sondern nur Typen, weil sich auf diese nicht bezogen werden kann oder muß, es wäre also:
void Rechnung(int);
bereits vollständig als Deklaration des Prototyps.
Super Danke, wie müsste ich das denn dem Compiler vertraut machen für den Fahl des es komplizierter wird?
Ein Funktionsprototyp sieht im Prinzip aus wie die Funktionsdefinition selbst, nur ohne die { } mit dem Code drin, stattdessen ein Semikolon.
Also in deinem Fall
void Rechnung(int Wert2);
Muss außerhalb von Funktionen stehen und vor der ersten Funktion, die die betreffende Funktion aufruft.