使用C++方式解决CallFunc创建
来源:互联网 发布:pageoffice php 编辑:程序博客网 时间:2024/06/05 00:50
CallFunc* func = CallFunc::create([&](){this->doAction();});
[函数对象参数]是标识了一个Lambda的开始。
[] 表示没有使用任何对项参数
[=] 表示可以使用Lambda所在所用范围内所有可见的局部变量,包括所在类this,传递方式为值传递
[&] 和[=]使用范围相同,传递方式为引用传递
[this] 可使用Lambda所在类中的所有成员变量
a 将a按照值传递方式传递进来,此时不能修改a,因为默认a为const,想要修改,需要添加修饰符mutable
&a 将a引用传递
a,&b a值传递,b引用传递
=,&a,&b a和b为引用传递,其他为值传递
&,a,b a和b为值传递,其他为引用传递。
Sprite* sp; CallFunc* func1 = CallFunc::create([&sp](){}); CallFunc* func2 = CallFunc::create([sp](){}); Sprite* sp2; CallFunc* func3 = CallFunc::create([sp,&sp2](){});
另外,在函数体内,写局部函数,有时候需要带参数的,比如说我想要清理一个array,但是并不需要将clearFunc(Array* array)写成一个public函数,此时只需要这样写:
auto func = [](__Array* &array){ array->removeAllObjects(); array->release(); array = NULL; }; func(array1); func(array2);
提醒,参数列表要记得加&,表示传递的是实餐,否则将传递行参,无法对外部变量进行修改。
比如:
int i = 5; auto func = [](int& d){ d++; printf("\n%d\n",d); }; func(i);
此时的i将会是6,可是如果
int i = 5; auto func = [](int d){ d++; printf("\n%d\n",d); }; func(i);func里面输出的是5,此时的i还是5,不会改变。
0 0
- 使用C++方式解决CallFunc创建
- CallFunc的创建
- 基本控件使用(三)(触摸,CallFunc,Schedule)
- dojo使用Programmatic(程序)方式创建form组件没有lable属性的解决
- 使用highcharts创建动态图表时遇到的问题及解决方式
- automation 服务器不能创建对象解决方式
- 正则表达式创建方式和使用方式
- 使用普通方式创建JavaBean
- 使用vi编辑时出现方向盘乱码(A B C D)解决方式
- C语言中两种创建结构的方式
- 【Cocos2dx 3.0学习笔记】回调函数的创建,涉及到CallFunc、CallFuncN、CC_CALLBACK_0、CC_CALLBACK_1、CC_CALLBACK_2等内容
- Follow and callFunc.
- cc.CallFunc()的用法
- cocos2d-js callFunc传参
- Linux C popen使用方式
- (C#)使用Task创建任务
- 使用C创建php扩展
- 使用Objective-C创建UUID
- 利用Intent进行Activity之间的通信(2)
- 关于战舰STM32用PL2303下载线下载和BOOT的软件相关控制
- PHP词法解析源码分析之PHP标签、关键字、类、数字
- 词频分析(C#版)
- 不懂算法之带分数
- 使用C++方式解决CallFunc创建
- ubuntu12.04samba服务器配置
- 网页关键词频率计算(词频计算js版)
- 黑马程序员——java之JDK1.5新特性
- NDK编译的时候遇到No rule to make target needed by *.o
- 异常处理回调函数
- python程序的调试方法
- 多态与索引器
- 簡單SQL存儲過程實例