C++回调实现方式

1。对象指针与函数指针:回调函数参数传入对象this和函数名称,否则只有全局函数或静态函数才能作为函数指针传递

2。std::function和std::bind

https://www.jianshu.com/p/f191e88dcc80

C++参考手册中对function的介绍:

std::function的实例能存储、复制及调用任何可调用的目标,包括:函数、lambda表达式、bind表达式或其他函数对象以及指向成员函数指针和指向数据成员指针,std::function包含在functional头文件中

std::function可以hold住任何可以通过“()”来调用的对象,包括:

  • 普通函数
  • 成员函数
  • 仿函数
  • lambda
  • std::bind

typedef  std::function<void(int, const char*)>  CallbackFunc;

void SubThread::setCallback(CallbackFunc  cb_func1);

void MainThread::executeFunc(int a, const char* s);

sub_thread.setCallback(std::bind(&MainThread::executeFunc, this, std::placeholders::_1, std::placeholders::_2));

猜你喜欢

转载自blog.csdn.net/smartgps2008/article/details/90576834