Problem mit std::function



  • Hallo,
    ich habe zwei Klassen, die etwa so aussehen:

    class A {
    public:
        A(std::function<void()> func) : function(func) {};
    private:
        std::function<void()> function;
    }
    
    class B {
    public:
        void MyFunc(){};
        B () : a(&MyFunc) {};
    private:
        A a;
    }
    

    Nun bekomm ich immer den Fehler

    error C2064: Ausdruck ergibt keine Funktion, die 0 Argumente übernimmt
    

    Irgendwo habe ich mal gelesen, da Funktion in Klassen automatisch immer noch den this Zeiger als Argument haben, und deshalb sowas nicht funktioniert.
    Auch habe ich gelesen, dass man sowas mit std::bind() beheben kann, jedoch habe ich jetyt keine Ahnung wie das bei einer Argumentlosen Funktion gehen soll.



  • B() : a(std::bind(&B::MyFunc, this)) {}
    

Anmelden zum Antworten