Matrix übergeben
-
Danke an allen!!
Hat lange gedauert aber ich habe nun noch ein wenig damit experimentiert und nun ist es mir hoffentlich klar.
-
So hier bin ich wieder
Ich würde nun gerne eine Funktion in einer Funktion aufrufen.Funktionsprototypen
void ausgabe_spielfeld(daten &spielfeld, daten &x, daten &auswertung); void x_berechnen(daten &x, daten &auswertung);
Funktionen
void ausgabe_spielfeld(daten &spielfeld, daten &x, daten &auswertung){ //... x_berechnen(daten &x, daten &auswertung); //Hier die Fehlermeldung //... } void x_berechnen(daten &x, daten &auswertung){ //... }
Nun bekomme ich die Fehlermeldung (Stelle makiert):
expected primary-expression befor & token[/code]
-
Das Problem ist, dass du anscheinend vergessen hast, wie man überhaupt Funktionen aufruft.
Hier mal ein Beispiel. In der Standardbibliothek ist der Sinus deklariert als:
double sin(double x);
Wie würdest du diese Funktion aufrufen?
~An all die Klugscheißer, die sich gerade die Finger wund tippen, dass da nur "double sin(double)" vorgegeben wäre: Falsch! Es wird auf den C-Standard verwiesen und der definiert "double sin(double x)". Bloß die Zusatzüberladungen im C++-Standard lassen den Parameter unbenannt. Ätsch! :p~
-
SeppJ schrieb:
double sin(double x);
Wie würdest du diese Funktion aufrufen?
Ich würde sie so aufrufen
sin(x)
Aber x kann ja auch haus heißen.
Also ich habe gestern abend noch mal überlegt und habe es geschafft unzwar so:x_berechnen(x, auswertung);
, aber warum so?
Weil in der Funktionvoid ausgabe_spielfeld(daten &spielfeld, daten &x, daten &auswertung)
werden die Variablen x & auswertung so angesprochen x.x & auswertung.auswertung. Es wäre nett wenn mir das einer nochmal genauer erklären könnte.
-
Fensterscheibe schrieb:
Ich würde sie so aufrufen
sin(x)
Aber x kann ja auch haus heißen.
Völlig richtig.
double sin(double x); void foo(){ double haus = 3.14; double sh = sin(haus); double x = 2.71; double sh2 = sin(x); double sh3 = sin(double haus); //syntax error double sh4 = sin(double x); //syntax error } void bla(){ x_berechnen(daten &x, daten &auswertung); //syntax error x_berechnen(x, auswertung); }
Beim Funktionsaufruf werden die Typen der Argumente nicht nochmal hingeschrieben. Soweit klar? Dass manchmal Funktionsargumente genauso heißen wie in der Funktionsdeklaration hat nichts zu sagen.
Fensterscheibe schrieb:
Weil in der Funktion
void ausgabe_spielfeld(daten &spielfeld, daten &x, daten &auswertung)
werden die Variablen x & auswertung so angesprochen x.x & auswertung.auswertung. Es wäre nett wenn mir das einer nochmal genauer erklären könnte.
Kommt drauf an wie daten definiert ist.
struct daten{ int x; int auswertung; }; struct daten x; x.x; x.auswertung; struct daten auswertung; auswertung.x; auswertung.auswertung; struct daten sonstwas; sonstwas.x; sonstwas.auswertung; sonstwas.sonstwas; //error: struct daten hat kein member "sonstwas"
Hier ist es wieder Zufall, dass die Variablen genauso heißen wie ihre Member. Kann so sein, muss nicht, hat nichts zu sagen.