我在我的设置中有这段代码,它们在一个对象数组上设置一些lambda函数,以便它们的值发生变化时:
for(int i = 0; i < kNumFreqs; i++)
{
settings.freqs[i]->setChangeFunction([&](float newValue){
DBG("filter" << i << ": " << newValue);
presetDirty = true;
});
}
问题是在lambda中,i的值是垃圾。我该怎么做?
谢谢。
答案 0 :(得分:2)
尝试按值捕获i
,如下所示:
for(int i = 0; i < kNumFreqs; i++)
{
settings.freqs[i]->setChangeFunction([i](float newValue){
DBG("filter" << i << ": " << newValue);
presetDirty = true;
});
}
(变化发生在lambda的[]
之间)