如何访问lambdas中的数组成员?

时间:2017-03-18 04:13:57

标签: c++ lambda

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

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

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

谢谢。

1 个答案:

答案 0 :(得分:2)

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

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

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