在C++中std :: function <void(Ref*)>的含义是什么?

Aar*_*Lee 0 c++ lambda cocos2d-x c++11

我遇到了这个函数的麻烦,我不知道它的含义是什么:

menuItem1->setCallback([&](cocos2d::Ref *sender)
Run Code Online (Sandbox Code Playgroud)

输入函数,参数是ccMenuCallback&:

    /** set the callback to the menu item
    * @code
    * In js,can contain two params,the second param is jsptr
    * @endcode
    * @lua NA
    */
    void setCallback(const ccMenuCallback& callback);
Run Code Online (Sandbox Code Playgroud)

typedef std::function<void(Ref*)> ccMenuCallback;
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 5

这是一个C++ 11 lambda.

基本上setCallback接受作为参数的a std::functiona cocos2d::Ref*和a 返回void.这是一种能够保持可调用功能的类型.

lambda是一个匿名函数,在这种情况下存储在std::function<void(cocos2d::Ref*)>变量中并传递给函数.

确实是这样的:

auto lambda = [&](cocos2d::Ref* sender) {
  /* implementation */
};
// ^ store the anonymous function in a variable

menuItem1->setCallBack(lambda);
Run Code Online (Sandbox Code Playgroud)