如何在 lambda 中访问数组成员

How to access array members in lambdas?

本文关键字:访问 数组 组成员 lambda      更新时间:2023-10-16

我的设置中有这段代码,可以在对象数组上设置一些lambda函数,以便在它们的值发生变化时:

for(int i = 0; i < kNumFreqs; i++)
{
    settings.freqs[i]->setChangeFunction([&](float newValue){
        DBG("filter" << i << ": " << newValue);
        presetDirty = true;
    });
}

问题是在 lambda 内部,i 的值是垃圾。我该怎么做?

谢谢。

尝试按值捕获i,如下所示:

for(int i = 0; i < kNumFreqs; i++)
{
    settings.freqs[i]->setChangeFunction([i](float newValue){
        DBG("filter" << i << ": " << newValue);
        presetDirty = true;
    });
}

(变化发生在 lambda 的[]之间(