我遇到了这个功能的麻烦,我不知道它的含义是什么:
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;
答案 0 :(得分:5)
这是一个C ++ 11 lambda。
基本上setCallback
接受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);
答案 1 :(得分:3)
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
}
可能是void setCallback(const ccMenuCallback&amp; callback);接受在单击菜单项或类似菜单项时调用的回调。
答案 2 :(得分:1)
此表达式为lambda:
[&](cocos2d::Ref *sender)