std::function<的含义是什么;void(参考*)>在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
接受接受cocos2d::Ref*
并返回void
的std::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)
相关文章:
- C++错误消息*成员参考.**初学者*
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 参考资源文件VC++中的$(SolutionDir)
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- EASTL矢量<向量<int>>连续的
- 为什么在运算符重载时需要参考?
- 使 \page 和 \subpage 参考 doxygen 中的方法文档
- std::shared_ptr 自定义参考计数器
- 英特尔 TBB 程序不会终止,可能会误用参考计数器
- 避免在基于反向范围的for循环实现中悬挂参考
- 通用参考 l 值不复制对象
- 标准::enable_if和通用参考的使用差异
- 标准::积累参考?
- C++丢失了参考
- 我可以有一个 ELI5 作为参考和指针以及何时使用它们吗?
- 矢量的通用参考
- 为什么"fun(i)"被推导出为"fun<int&>"而不是"fun<int>",因为"i"是"int"的类型而不是参考?
- C++17 和静态临时生存期的参考扩展
- C++ 参考:这两个语句有什么区别?
- 如何理解 C++17 标准参考中的 [intro.object]/3? N4659 的