回调
06 Mar 2017
|
#include<stdio.h>
void printWelcome(int len)
{
printf("welcome -- %d\n", len);
}
void printGoodbye(int len)
{
printf("byebye-- %d\n", len);
}
void callback(int times, void (* print)(int))
{
int i;
for (i = 0; i < times; ++i)
{
print(i);
}
printf("\n welcome or byebye !\n");
}
void main(void)
{
callback(10, printWelcome);
callback(10, printGoodbye);
}
Test类中的bind函数调用B类中的call函数,b中的call函数又反过来回调Test类中的callback函数。bind函数和function函数,这两个函数之前是boost函数成员,现在加入到c++11标准中。
#include <iostream>
#include <functional>
using namespace std;
using namespace std::placeholders;
typedef std::function<void(int,int)> Fun;
class B{
public:
void call(int a,Fun f)
{
f(a,2);
}
};
class Test{
public:
void callback(int a,int b)
{
cout<<a<<"+"<<b<<"="<<a+b<<endl;
}
void bind()
{
Fun fun=std::bind(&Test::callback,this,_1,_2);
B b;
b.call(1,fun);
}
};
int main()
{
Test test;
test.bind();
return 0;
}