std::function简单的理解
来源:互联网 发布:高仿lv男包淘宝店 编辑:程序博客网 时间:2024/06/08 05:24
之前转载了一篇关于std::function,讲的太专业了,但是貌似看懂了,但是没能深入理解,今天在看案例时,突然懂得了。
#define STRINGIFY(x) #x#define TRANS(__className__) { \ [](float t, Scene* s){ return __className__::create(t,s);}, \ STRINGIFY(__className__), \ }struct _transitions { std::function<TransitionScene*(float t, Scene* s)> function; const char * name;} transitions[] = { TRANS(TransitionMoveInL), TRANS(TransitionMoveInR), TRANS(TransitionMoveInT), TRANS(TransitionMoveInB), };TransitionsTests::TransitionsTests(){ int sceneIndex = 0; for (auto& test : transitions) { addTestCase(test.name, [sceneIndex](){ auto scene = TransitionsTest::create(); // fix bug #486, without setDepthTest(false), FlipX,Y will flickers Director::getInstance()->setDepthTest(false); if (sceneIndex % 2) { scene->addChild(TestLayer2::create(transitions[sceneIndex].name)); } else { scene->addChild(TestLayer1::create(transitions[sceneIndex].name)); } return transitions[sceneIndex].function(TRANSITION_DURATION, scene); }); sceneIndex++; }}TransitionMoveInL,TransitionMoveInR,TransitionMoveInT,TransitionMoveInB,这四个函数都是TransitionScene的子类,当我们定义了std::function<TransitionScene*(float t,Scene* s)>function时,这个function就可以代表四个子类了,这样做的目的就是为了赋值或是初始化。这样我们就可以使用for循环进行,避免了一个一个的初始化,减轻工作量,同时方便函数的使用。
多说一句:[ ](){return ;},这个符号一直没看懂,今天终于 看懂了[ ]可以理解为数组符号,()理解为构造函数的参数,{return; }代表返回的函数。
0 0
- std::function简单的理解
- std::function std::bind理解
- 理解 std::function 和 function::bind 的用法
- loss function 的简单理解
- std::function的用法
- std::function的使用
- std::function和std::bind的使用?
- c++11 对std::function与std::bind理解
- std::mutex std::unique_lock std::lock_guard std::recursive_mutex的理解
- STD::FUNCTION
- std::function
- std::function
- std::function
- std::function
- std::function
- std::function
- std::function
- std::function
- Mysql安装及1067错误相关
- NIM备份出现0042-154报错的解决办法
- java 死锁程序
- HashMap,Hashtable以及ConcurrentHashMap的比较(源码)
- IPv6
- std::function简单的理解
- DesignPattern_Java:Prototype Pattern
- python @property
- 算法导论->算法基础->2.1插入排序 (从小到大)
- mysql的二进制文件与主从复制
- 模拟JDK动态代理类的实现
- 两个工程在同一个tomcat里运行遇到的log4j配置问题
- Talk Is Cheap ,Show Me The Code (一)
- 准备准备..