C++ 将成员函数指针指定为来自另一个函数的回调

C++ 将成员函数指针指定为来自另一个函数的回调,c++,c++11,C++,C++11,我有一个类a,它有一个回调函数指针。默认值是来自类A的一些函数指针,但我想从类B分配一个函数指针。我尝试了std::function和std::bind,但它不起作用。我试图使用,但没有成功 代码是: #include <iostream> #include <string> #include <functional> class A{ public: typedef void(*action)() ; A( std::function&l

我有一个类a,它有一个回调函数指针。默认值是来自类A的一些函数指针,但我想从类B分配一个函数指针。我尝试了
std::function
std::bind
,但它不起作用。我试图使用,但没有成功

代码是:

#include <iostream>
#include <string>
#include <functional>

class A{
public:
    typedef void(*action)() ;

    A( std::function<void()> a  = nullptr)
    {
        if(a)
            m_Func = a; 
        else
            m_Func = std::bind( (this->*(this->dummyFunction))() );
    }
    std::function<void(void)> m_Func;
    void dummyFunction(void){std::cout<<"dummy function\n" <<std::endl;}
};

class B{
public:
    std::function<void()> m_Bfunc(){ std::cout << "class B func\n" <<std::endl;}
};

int main()
{
  B b;
  A a(b.m_Bfunc);
  a.m_Func();
}
#包括
#包括
#包括
甲级{
公众:
typedef void(*action)();
A(std::function A=nullptr)
{
如果(a)
m_Func=a;
其他的
m_Func=std::bind((this->*(this->dummyFunction))();
}
std::函数m_Func;
void dummyFunction(void){std::cout您似乎想要:

class A{
public:
    A(std::function<void()> a = nullptr)
    {
        if(a)
            m_Func = a; 
        else
            m_Func = [this](){ dummyFunction(); };
    }
    std::function<void()> m_Func;
    void dummyFunction(){std::cout<<"dummy function\n" <<std::endl;}
};

class B{
public:
    void func(){ std::cout << "class B func\n" <<std::endl;}
};

int main()
{
  B b;
  A a([&](){b.func(); });
  a.m_Func();
}
A类{
公众:
A(std::function A=nullptr)
{
如果(a)
m_Func=a;
其他的
m_Func=[this](){dummyFunction();};
}
std::函数m_Func;

void dummyFunction(){std::cout
action
在这段代码中最终是毫无意义的;去掉它。只要说一句话,你似乎希望
绑定
是(a)正确的(不是),并且(b)从
完成(鉴于此布局,它是连接
b
b:m_BFunc
的唯一合理的地方).std::函数m_Bfunc(){std::cout