C++ lambda 表达式传递的变量默认不可变
来源:互联网 发布:淘宝贷款怎么提前还款 编辑:程序博客网 时间:2024/06/06 08:50
我遇到如下问题:
int count=0; listener->onTouchMoved=[count](Touch* t,Event* e){ count++; log("onTouchMoved"); };
Xcode下的编译错误为:Cannot assign to a variable captured by copy in a non-mutable lambda.
那么如何解决呢?
在 lambda表达式中,捕获的变量默认是不可变的。
This function call operator or operator template is declared const (9.3.1) if and only if the lambda-expression’s parameter-declaration-clause is not followed by mutable.
因此如果你想再在ambda表达式内改变变量的值,那么就要改写以上内容为:
int count=0; listener->onTouchMoved=[count](Touch* t,Event* e) mutable{ count++; log("onTouchMoved"); };
1 0
- C++ lambda 表达式传递的变量默认不可变
- Java 8 Lambda 捕获外部变量 -- 不可变的原因
- String变量为什么是不可变的?
- final修饰的变量是引用不可变,还是对象不可变
- 不可变对象和类,变量的作用域
- 【Java学习笔记】 String变量为什么是不可变的?
- Final关键字修饰变量时,是引用变量的值不可变,还是对象的值不可变呢?
- 转载:C 指针传递变量为什么无法修改变量值
- python可变变量和不可变变量
- Python 可变变量与不可变变量
- 【c/c++】Lambda表达式
- 不可变的String
- String的不可变
- Lambda表达式中的引用传递
- c#=>lambda表达式的理解
- Objective-C 不可变数组
- c默认清零的变量
- Objective-C中可变与不可变字符串的学习
- 我正在dataguru学习
- html title换行方法 如a链接标签内title属性鼠标悬停提示内容换行
- 【转载】C语言字符串处理函数 - 大集合
- HTML嵌入Falsh方法
- android 开发规范
- C++ lambda 表达式传递的变量默认不可变
- 新闻收藏2014
- HDU 4288 Coder 离散化+线段树
- Ubuntu14.04 install Divfix++
- <转>凯文·凯利斯坦福演讲-预言未来20年科技潮流
- 自己写的归并排序算法的一个小例子
- 使用PHP正则表达式时的一个问题
- 如何在Mac OS X上面指定Eclipse启动时用指定的某一版本JDK?
- android实现 彻底退出应用/清除数据/卸载应用的方法