Cocos2dx学习笔记——lambda表达式的引用捕获

lambda表达式:
[capture] (params) {body}

lambda表达式是一种cpp的匿名闭包函数。为了使body中的逻辑与外界数据进行交互。我们需要用[capture]来捕获外界数据。如使用[a,b]来捕获外界的变量a,b。
默认的捕获当lambda表达式建立时变量a,b的副本。也就是所谓的以值的方式被捕获。在body中修改a,b不会影响到外界的数据(参考函数与调用函数的关系)。但是为了实现某些目的:比如计数。我们需要在body中修改外部的变量。那么我们就需要以引用的方式捕获外部变量。有两种写法:
1.以引用的方式捕获所有的外部自动变量。
适用范围:对整个类进行操作

1
2
3
4
[&](){
this->a = 1;
this->b = 2;
}

2.以引用的方式捕获某个值
适用范围:进行小范围的计数等不需要被其他方法引用的变量

1
2
3
4
int* a;//必须是指针才能被正常的引用
[&a](){
*a = 2
}

文章目录