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


Anmelden zum Antworten