memberfunktion als callback fuer eine c funktion



  • Hallo zusammen,

    gibt es eine moeglichkeit einer c funktion einen callback zu deffinieren der an eine memberfunktion geht?

    (Compiler: gcc/linux)

    Mal ein kleines Beispiel dazu:

    class Eins {
        public:
           Eins();
           void machwas();
           int mycallback(char *);
        protected:
           int fd;
    }
    
    Eins::Eins() 
    {
        fd = open(...);
        // noch mehr code
    }
    
    void Eins::machwas()
    {
        c_funktion_die_einen_callback_benoetigt(&Eins::mycallback);
    }
    
    int Eins::mycallback(char *data)
    {
        write(fd, ...)
    }
    

    so wie ich das in "Eins::machwas()" geschrieben habe funktioniert es leider nicht...

    Jemand eine Idee?

    Danke und gruesse

    kali



  • Wie wäre es mit der Benutzung einer Suchmaschine ?

    http://www.newty.de/fpt/index.html



  • Danke schoen, ich hab schon ne weile gesucht gehabt aber bin nie ueber ein ordendliches Ergebniss gestollpert. aber ich werde mir die seite mal anschauen.



  • Du kannst ein "Trampolin" basteln (siehe "trampoline function" aka. "thunk"), d.h. eine free function, die dann an eine Memberfunktion "weiterleitet".

    Dazu muss entweder die Memberfunktion statisch sein, oder das Callback muss einen Userdata/Context/... Pointer haben für den du beim Setzen einen Wert übergeben kannst. (Es muss kein Pointer sein, aber halt irgendwas wo du mit z.B. reinterpret_cast nen Zeiger reinbekommst und verlustfrei wieder zurück, z.B. ein ULONG_PTR oder sowas)


Anmelden zum Antworten