c++从callback中获取数据在回调函数以外使用

与上一篇ROS从callback中获取数据在回调函数以外使用类似,本文以代码展示在通用的C++代码(非ROS环境)中如何获取回调函数中的数据供第三方使用。在非ROS的环境下,我目前知道的也是只能借助类来去实现这个功能:

#include 
#include 

using namespace std;
using namespace std::placeholders;
 
typedef std::function<void(double)> Fun;//typedef一个函数指针

class GetDataOutOfCallback{
public:
    double data_from_cb;

    void caller(double a, Fun fp){
        fp(a);
    }

    void func(double a){
        std::cout << __FUNCTION__ <<":" << a <<"\n";
        data_from_cb = a;
    }

    void bind()
    {
        Fun fun = std::bind(&GetDataOutOfCallback::func, this, _1);
        caller(3.7, fun);
    }

    void print_var(){std::cout << __FUNCTION__ <<" : " << data_from_cb << "\n";}
};

int main(){
    GetDataOutOfCallback getDataOutOfCallback;
    getDataOutOfCallback.bind();
    getDataOutOfCallback.print_var();
    return 0;
}

你可能感兴趣的:(C++,编程开发)