【发布时间】:2018-08-12 20:36:41
【问题描述】:
我想在我的 lambda 表达式中捕获一个本地指针。目前我的代码是这样的
MYButton* button;
button->onPress = [index,&](control*){
button->foobar(x, y);
};
我得到了错误
错误:(835, 13) 变量 'button' 不能被隐式捕获 在没有指定捕获默认值的 lambda 中
我的印象是在捕获子句中使用& 意味着通过引用捕获本地范围内的所有内容。在那种情况下,为什么我会收到此错误?
【问题讨论】:
-
如果您希望 lambda 函数修改它们并影响本地,或者如果它们的复制成本很高,您几乎只想通过引用捕获本地。当然,对于这样的指针,您更愿意按值捕获。