通过一个按钮类设置回调函数
class Button
{
public:Button(const string &label)
:label_(label),action_(0){}
void setAction(void (*newAction)())
{action_=newAction}
void onClick() const
{if(action_) action_();} //如action_不为空,执行回调函数。
private:
string label_;
void (*action_)();
}
以下是使用回调函数的过程
extern void playMusic();
Button *b =new Button("aaaaaaa");
b->setAction(playMusic);//将playMusic的指针付给Button中的action_,当Button被点击时,执行playMusic()函数,用户可以指定相应的操作。(类似于函数注册)
回调方(Button)知道何时该去干一件事情,但不知道具体干什么,另一方(playMusic())知道该干什么,但是不知道该何时干