Function-Pointer als return-argument
-
Hallo,
Ich habe folgendes Problem: 2 Funktionen sollen definiert werden:
Funktion 1 hat als input-argument ein 'char', output-argument ist ein 'float'.
Funktion 2 hat als input-argument ein 'int', als output-argument soll ein pointer zu einer funktion mit argumenten des typs 'Funktion 1' geliefert werden.Mein Header sieht demnach so aus:
float funct1(char); void* funct2(int);Mein cpp-file ist folgendermaßen gestaltet:
#include<iostream>; #include "header.h"; using namespace std; int main(){ float (*(*fp) (int))(char); fp=funct2; }Leider beschwert sich der Compiler über die Inkompatibilität des deklarierten Void-pointers für funktion 2.
Gibt es irgendeine Möglichkeit, einen allgemeinen Ausdruck für einen Funktions-pointer als return-argument für Funktion 2 im header-file zu schreiben?Vielen Dank!
-
Martin2000 schrieb:
Ich habe folgendes Problem: 2 Funktionen sollen definiert werden:
Funktion 1 hat als input-argument ein 'char', output-argument ist ein 'float'.
Funktion 2 hat als input-argument ein 'int', als output-argument soll ein pointer zu einer funktion mit argumenten des typs 'Funktion 1' geliefert werden.Deiner Beschreibung folgend, komme ich zu dem hier:
float f1 (char); void (*f2 (int)) (float (*) (char), float (*) (char), [...]);Aber vermutlich meinst du nicht "ein pointer zu einer funktion mit argumenten des typs 'Funktion 1'", sondern "Ein Funktionszeiger mit der Signatur von 'Funktion 1'"; dann sieht es so aus:
float f1 (char); float (*f2 (int)) (char);Und wenn du ein typedef verwendest, wird es sogar übersichtlich:
float f1 (char); typedef float (*f1_t) (char); f1_t f2 (int);
-
Könnte es da einen Zusammenhang geben?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-244924.html