繁体   English   中英

分配一个成员函数指针作为另一个函数的回调

[英]Assign a member function pointer as a callback from another function

我有一个 A 类,它有一个用于回调的函数指针。 默认值是来自类 A 的一些函数指针,但我想从类 B 分配一个函数指针。我尝试过std::functionstd::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();
}

我希望函数m_Bfunc运行。

看来你想要:

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();
}

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM