std::function<的含义是什么;void(参考*)>在C++中

What is the meaning of std::function<void(Ref*)> in C++

本文关键字:参考 gt C++ 是什么 lt function std void      更新时间:2023-10-16

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

menuItem1->setCallback([&](cocos2d::Ref *sender)

进入函数,参数为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);

typedef std::function<void(Ref*)> ccMenuCallback;

这是一个C++11 lambda。

基本上,setCallback接受接受cocos2d::Ref*并返回voidstd::function作为自变量。这是一种能够容纳可调用函数的类型。

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

事实上,它有点像:

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

std::函数可以容纳函数指针、方法绑定、lambda表达式和任何带有重载运算符()的对象

void someFunc(cocos2d::Ref *sender)
{
    //some code
}
std::function<void(Ref*)> f1 = someFunc;
std::function<void(Ref*)> f2 = [&](cocos2d::Ref *sender) {
    //some code
}

可能会使setCallback无效(const-ccMenuCallback&callback);获取一个回调,当单击菜单项或类似的东西时调用该回调。

这个表达式是lambda:

[&](cocos2d::Ref *sender)