Komische Fehlermeldung nach Funktionsprogrammierung
-
silent_max schrieb:
Fass es jetzt bitte nicht falsch auf, aber da muss ich erst nachdenken, wo da ein sinnvoller Unterschied ist...
Welcher Unterschied? Das "Sub(x,y)" vs "Sub()", oder warum deine Implementierung von "Sub(float, float)" nur "Sub"optimal ist, und wie sie sich von der mit lokalen Parametern unterscheidet?
-
@cooky451: Das ist kein verfrühter Aprilscherz, ganz und gar nicht.
Ich bin halt noch nicht so fit wie ihr in C++ Programmierung. Bloß ich möchte es lernen.
Ich möchte euch nicht um Gnade erbitten, aber bitte denkt daran, jeder fängt einmal klein an.
-
Also ja, jeder fängt mal klein an, aber das ist schon extrem. Wenn du eine Funktion foo hast, und diese Funktion keine Parameter erwartet, kannst du sie doch nicht mit Parametern aufrufen. Was daran kann man bitte nicht verstehen?
void foo() { } int main() { foo(5); // :-1: foo(5, 6, 7); // :-1: foo(); // :+1: }
-
cooky451 schrieb:
Also ja, jeder fängt mal klein an, aber das ist schon extrem. Wenn du eine Funktion foo hast, und diese Funktion keine Parameter erwartet, kannst du sie doch nicht mit Parametern aufrufen. Was daran kann man bitte nicht verstehen?
void foo() { } int main() { foo(5); // :-1: foo(5, 6, 7); // :-1: foo(); // :+1: }Ich verstehe einfach nicht den Unterschied zwischen den Funktionen, die Parameter erwarten und Funktionen, die keine Parameter erwartet? Wo ist da der Unterschied?
-
silent_max schrieb:
Ich verstehe einfach nicht den Unterschied zwischen den Funktionen, die Parameter erwarten und Funktionen, die keine Parameter erwartet? Wo ist da der Unterschied?
Die einen erwarten Parameter und die anderen nicht... ich geb's auf..
-
Bitte schreib je ein Beispiel ... Dann kapier ich es.
Weil in dem Skript, das ich verwende, wird genau das Gegenteil geschrieben wie Du es mir beibringen willst.
-
silent_max schrieb:
Weil in dem Skript, das ich verwende, wird genau das Gegenteil geschrieben wie Du es mir beibringen willst.
Welches Skript ist das? Hört sich ziemlich komisch an. Beispiele hatten wir eigentlich auch genug in diesem Thread...
Google doch einfach mal nach Funktionsüberladung. Die Parameter (Anzahl undTyp) bestimmen in C++ die Signatur, welche wiederum vom Compiler für die korrekte Zuordnung von Aufrufen verwendet wird.#include <iostream> using namespace std; void foo() { cout << "ohne Parameter" << endl; } void foo(int x) { cout << "mit int (" << x << ") als Parameter" << endl; } void foo(double x) { cout << "mit double (" << x << ") als Parameter" << endl; } void foo(int x, double y) { cout << "mit int und double (" << x << ", " << y << ") als Parameter" << endl; } int main() { foo(); foo(10); foo(12.0); foo(10, 20.22); }ohne Parameter mit int (10) als Parameter mit double (12) als Parameter mit int und double (10, 20.22) als Parameter
-
Ich verwende das Skript "C++ in 21 Tagen" von Jesse Liberty.
Dachte, dass es für so nen Anfänger wie mich recht nützlich ist.
Aber ihr belehrt mich des besseren.
Das andere Skript, das ich habe, ist von einem Fachdozenten, das aber nur C behandelt.
-
silent_max schrieb:
Weil in dem Skript, das ich verwende, wird genau das Gegenteil geschrieben wie Du es mir beibringen willst.
Sicher nicht. Solange es nicht die Unterschiede zwischen C und C++ beibringen möchte, wird es wirklich niemanden geben der das falsch verstanden hat. (Weil er ja auch nichts schreiben könnte, das irgendwo funktioniert.)
Ein Beispiel?
void foo(int a) { } void bar(int a, int b) { } void baz() { } int main() { foo(5); // :+1: bar(24, 765);// :+1: baz();// :+1: }
-
silent_max schrieb:
Das andere Skript, das ich habe, ist von einem Fachdozenten, das aber nur C behandelt.
AHA! C != C++!
In C heißt nämlich diese Deklaration
void foo();tatsächlich "ich kann so viele Parameter aufnehmen, wie du willst"!
Das kann man ausnutzen:#include <stdio.h> #define NO_PARAM void foo(); int main(void) { foo(10, 20.22); } #ifdef NO_PARAM void foo(void) { printf("ohne Parameter\n"); } #else void foo(int x, double y) { printf("mit int, double (%d, %f)\n", x, y); } #endifAber das ist C und nicht C++!