一、使用函数指针
可以使用typedef和using两种表示方法
//回调 //typedef void(*CbkFunc)(void *arg); using CbkFunc = void(*)(void *arg);//c++11 using新用法,可以替代typedef void TestFunc(void *arg) { int param = (int)arg; cout << param << endl; } void TestCbk(CbkFunc cbk, void *arg) { cbk(arg); } int main() { int param = 2; TestCbk(TestFunc, (void *)param); }
二、使用c++11中的bind和function
#include <iostream> #include <functional> using namespace std; function<void(void *)> m_cbkc11; void TestFunc(void *arg) { int param = (int)arg; cout << param << endl; } int main() { int param = 2; auto func = bind(TestFunc, std::placeholders::_1); func((void *)param); //c++中可以创建个m_cbkc11对象,在想要回调的地方利用m_cbkc11将数据传递回去 //m_cbkc11 = func; //m_cbkc11((void *)param); }