boost::bind : memberfunktion an objekt binden und funktionspointer zurückgeben



  • Servus,

    ich möchte aus einer Memberfunktion eine "freie" Funktion machen und in einem funktionspointer speichern. Folgender minimalcode:

    class Foo
    {
    public:
        float bar(float, float, int, void*) {// mach was;}
        void setup() {
            float (*mycallback)(float,float,int, void*);
            mycallback = boost::bind(&Foo::bar,this);
        }
    }
    

    kompiliert nicht mit folgender Meldung

    error: cannot convert ‘boost::_bi::bind_t<float (&)(float, float, int, void*), boost::_mfi::dm<float ()(float, float, int, void*), Foo>, boost::_bi::list1<boost::_bi::value<Foo*> > >’ to ‘float (*)(float, float, int, void*)’ in assignment
    

    Was läuft hier falsch?



  • Ganz einfach: du hast bind nicht verstanden.
    Bind spuckt dir einen Funktor aus, ein Funktionszeiger wird da nimmer draus.


Anmelden zum Antworten