fesdobat 2024-03-24 19:08 采纳率: 50%
浏览 2

有没有办法访问lambda的成员变量?

有没有办法访问lambda的成员变量?
代码:
auto f = [count = 0] () mutable { count++; }
int count = f.count ? //这里报错,说不能访问f的private变量

要如何才能访问到f.count ?

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-24 19:08
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    lambda表达式的成员变量默认是私有的,外部无法直接访问。如果想要访问lambda表达式中的成员变量,可以使用lambda表达式的捕获列表(capture list)。 捕获列表由包含在方括号([])中的变量列表组成,每个变量可以指定其捕获方式。捕获方式包括按值捕获和按引用捕获。按值捕获会复制变量值,而按引用捕获则会将变量绑定到一个引用上。 对于上面的代码,可以使用如下的捕获列表来访问lambda表达式中的成员变量: auto f = [count = 0]() mutable { count++; }; int count = f.count; 修改后的代码如下: auto f = [count = 0]() mutable { count++; }; int count = f.count; // 此处访问f的成员变量count 值得注意的是,捕获方式默认为按值捕获,如果要按引用捕获变量,需要在变量名前加&符号。 例如: int x = 1; auto f = [&x]() { x++; }; // 按引用捕获变量x 最后,要注意捕获的变量必须能够在lambda表达式执行时保持有效,例如不能捕获函数的局部变量。
    评论

报告相同问题?

问题事件

  • 创建了问题 3月24日

悬赏问题

  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?