繁体   English   中英

std :: function是什么意思 <void(Ref*)> 在C ++中

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

我遇到了这个功能的麻烦,我不知道那是什么意思:

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接受一个std::function作为参数,该std::function采用cocos2d::Ref*并返回void 这是一种能够容纳可调用函数的类型。

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

确实是这样的:

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

menuItem1->setCallBack(lambda);

std :: function可以保存函数指针,方法绑定,lambda表达式以及任何带有重载operator()的对象

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM