Funktionszeiger erstellen, Arrays aus Funktionszeigern



  • Hi @all!
    Ich habe folgendes Problem:
    Ich möchte während der Laufzeit eine beliebige Abfolge von Funktionen festlegen können. Ich dachte da an sowas wie die Abfolge in Array speichern, und dann z.B. mit Funktion[1] die Funktion die in 1 gespeichert ist. Ich hab da mal sowas von Funktions-Pointer gehört, weiß aber nichts genaueres. Gibt es da irgendeine Möglichkeit?? Der vorteil beim Array wär halt dass ich dann z.B. mit einer For-Schleife die Funktionen nacheinander Ausführen kann....

    Wäre für eine Antwort echt dankbar!!!

    [ 09.07.2001: Beitrag editiert von: class CMarcus ]



  • Hallo,
    du kannst Funktionspointer in einem Array speichern. Diese müssen aber den selben Typ haben:
    Bsp:

    ...
    typedef void (*pFunc)();
    void Func1()
    {
        //...
    }
    void Func2()
    {    
        //...
    }
    int main()
    {
        pFunc Arr[2];
        Arr[0] = &Func1;
        Arr[1] = &Func2;
        int i;
        for (i = 0; i < 2 ; i++)
        {
           Arr[i]();
        }
        return 0;
    }
    

    Gruß

    ---editiert zu Testzwecken

    [ 07.07.2001: Beitrag editiert von: class CMarcus ]



  • und wie macht man das, wenn die funktionen parameter erwarten?



  • Hallo,
    ...dann ändert man den typedef.
    Bsp:
    typedef int (*pFunc)(int, float);

    Gruß



  • Hallo,

    typedef int (*pFunc)(int, double);
    
    int Func1(int x, double y)
    {
        cout << "Func1 " << x << " " << y << endl;
        return 5;
    }
    
    int Func2(int x, double y)
    {
        cout << "Func2 " << x << " " << y << endl;
        return 7;
    }
    
    int main()
    {
        pFunc Functions[2];
    
        Functions[0] = &Func1;
        Functions[1] = &Func2;
    
        int Ret = Functions[0](5, 6.0);
        Ret = Functions[1](12, 18.0);
        return 0;
    }
    

    Gruß