[英]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.