manjo
26-05-2004, 17:40
Hallo!
Ich nutze eine C-Library in C++. Diese ist alles andere als sauber programmiert - geht aber nicht anders, diese muss es sein.
Die entsprechenden Headerfiles sind mit extern "C" includiert. Aus dieser Library moechte ich eine Funktion mit folgendem Prototyp aufrufen:
int LibFkt( int para1, int para2, int (*FktPointer)() );
Der FktPointer zeigt bei jedem Aufruf dieser LibFkt auf eine andere Funktion. Die Funktion, auf die FktPointer zeigt, hat verschiedene Uebergabeparameter:
int Funktion1( int fpara1, fpara2 );
int Funktion2( int gpara1 );
Nun rufe ich die LibFkt wie folgt auf:
LibFkt(Para1,Para2,&Funktion1);
LibFkt(Para11,Para22,&Funktion2);
C++ meckert nun wohl auch zu recht,
invalid conversion from `int (*)(int, int)' to `int (*)()
Was nun? Wie bekomme ich es hin, dass ich die LibFkt trotzdem benutzen kann? Kann ich die Uebergabeparameterliste der Funktion, die hinter dem Funktionspointer steht, casten?
Viele Gruesse,
Manjo.
Ich nutze eine C-Library in C++. Diese ist alles andere als sauber programmiert - geht aber nicht anders, diese muss es sein.
Die entsprechenden Headerfiles sind mit extern "C" includiert. Aus dieser Library moechte ich eine Funktion mit folgendem Prototyp aufrufen:
int LibFkt( int para1, int para2, int (*FktPointer)() );
Der FktPointer zeigt bei jedem Aufruf dieser LibFkt auf eine andere Funktion. Die Funktion, auf die FktPointer zeigt, hat verschiedene Uebergabeparameter:
int Funktion1( int fpara1, fpara2 );
int Funktion2( int gpara1 );
Nun rufe ich die LibFkt wie folgt auf:
LibFkt(Para1,Para2,&Funktion1);
LibFkt(Para11,Para22,&Funktion2);
C++ meckert nun wohl auch zu recht,
invalid conversion from `int (*)(int, int)' to `int (*)()
Was nun? Wie bekomme ich es hin, dass ich die LibFkt trotzdem benutzen kann? Kann ich die Uebergabeparameterliste der Funktion, die hinter dem Funktionspointer steht, casten?
Viele Gruesse,
Manjo.