Zeiger auf Funktion zurückliefern...
-
Hallo,
ich habe einen privaten Zeiger auf eine Form Funktion und möchte diesen in einer GetFunktion zurückliefern leider bekomm ich Deklaration der getFunktion nicht hin...
Zeiger auf die Funktion is deklariert mit:
static void (__closure *_MessageFunction) (byte&, int&, AnsiString&);Wie muss nun die GetFunktion deklariert werden? So hab ichs, geht aber nicht:
static (void* ( __closure *) (byte&, int&, AnsiString&)) GetMessageFunction();
-
Ich nochmal, ich hab mal einfach nen falschen typ genommen (void
und mir den compiler fehler angeschaut, seltsamer weise spricht der von nem ganz anderen typ des Zeigers als ich deklariert habe... wieso das?[C++ Fehler] E2034 Konvertierung von 'void (* (_closure )(unsigned char &,int &,AnsiString &))(unsigned char &,int &,AnsiString &)' nach 'void *' nicht möglich
-
TheRebel schrieb:
Zeiger auf die Funktion is deklariert mit:
static void (__closure *_MessageFunction) (byte&, int&, AnsiString&);Wie muss nun die GetFunktion deklariert werden? So hab ichs, geht aber nicht:
static (void* ( __closure *) (byte&, int&, AnsiString&)) GetMessageFunction();probier mal so:
void GetMessageFunction(byte&, int&, AnsiString&);das static bezieht sich auf den Zeiger, nicht auf die Funktion. Und das __closure steht AFAIK für eine gebundene Memberfunktion (in ISO-C++ kann man keine Zeiger auf an ein Objekt gebundene Memberfunktionen definieren).
-
Nochmal hier, ich möchte nen Zeiger auf eine Funktion vom Typ
void (__closure *const) (byte&, int&, AnsiString&)
mittels einer Funktion zurückgeben, dein Vorschlag enthält aber eine Parameterliste und ich brauch ne Deklaration einer Funktion vom Rückgabetyp des Funktionszeigers...//funzt: (entspricht setFunktion) static void BindMessageRoutine( void (__closure *const MessageFunction) (byte&, int&, AnsiString&) ); //funzt: (Aufruf) static void CallMessageRoutine( byte kindOfMessage, int TimeToWait, AnsiString MessageText ); //geht so nicht: static *( void (__closure *const) (byte&, int&, AnsiString&) ) GetMessageFunction();
-
Ach so, sorry, hab irgendwie die Frage falsch gelesen. Versuchs mal so:
void (__closure *GetMessageFunction())(byte&, int&, AnsiString&);Ich bin mir mit dem __closure nicht sicher, da ich das so nicht kenne (bin kein Borland-User). Im Zweifelsfalle halt ein Typedef bauen.
-
uuuuhhuuuuuu!
funzt! danke!! kapier ich zwar nicht weshalb die syntax hier so ist...