Funktionszeiger Problem(Parameter)
-
Hi !
Ich habe ein Problem und zwar habe ich zB. eine Funktion
double f(double x,double a,double b) und eine Funktion max die einen Funktionszeiger auf eine Funktion mit einem double Parameter erwartet.
Ich möchte nun der Funktion max die Funktion f für verschiedene Parameter a, b übergeben, wie kann ich das mit Funktionszeigern lösen ?Wäre super nett wenn mir jemand helfen könnte
Grüße
-
void *ptr - dann in der funktion casten.
-
das verstehe ich leider nicht ganz, soll ich in der Funktion max casten? Wann übergebe ich die Parameter a und b?
-
Klerk schrieb:
Ich habe ein Problem und zwar habe ich zB. eine Funktion
double f(double x,double a,double b) und eine Funktion max die einen Funktionszeiger auf eine Funktion mit einem double Parameter erwartet.
Ich möchte nun der Funktion max die Funktion f für verschiedene Parameter a, b übergeben, wie kann ich das mit Funktionszeigern lösen ?Zeig mal Pseudocode, wie du dir das vorstellst. So wie ich deine Beschreibung derzeit verstehe, klingt das unlogisch, das kann nicht sein.
-
Du kannst keine evaluierende Funktion an eine weitere übergeben, also
void max(double d) { } double f(void(*fkt)(double)) { fkt(1.23); /* das Argument steht dir hier aus dem aufrufenden Kontext nicht zur Verfügung */ } ... int main() { ... f(max(1.23)); ... }
ist unmöglich, es geht nur mit Extra-Parameter für das Argument, also
double f(void(*fkt)(double),double d) { fkt(d); /* hier schon, s.o. */ } ... int main() { ... f(max,1.23); ... }
-
lali schrieb:
void *ptr - dann in der funktion casten.
Das ist natürlich totaler Schwachfug.
Der Typ void* und ein Funktionszeigertyp sind inkompatibel, d.h. ein Cast bedeutet undefiniertes Verhalten.