我正在使用 PPL 和 parallel_for 语法来创建一个 for 循环。在捕获子句中,我有 3 个变量,其中一个是类成员。由于在捕获子句中的变量中存在类成员,导致编译错误。但是,如果我在 lambda 主体中有这个类成员,它也不会编译,并且错误声明是封闭范围内的变量应该在捕获子句中。如何进行?我应该事先将变量成员复制到局部变量中,并将其传递到捕获子句中吗?
这是代码,其中 formulaCommand 是类成员。
parallel_for (m_rowStart,m_rowEnd+1,[&functionEvaluation,varModel_,formulaCommand](int i)
{
MLEquationVariableModel model_(varModel_);
model_.addVariable("i", i);
model_.addVariable("j", 1);
MLEquationCommand* command_ = formulaCommand->duplicate(&model_);
double d = command_->execute().toDouble();
if(d==NO_VALUE)
{
functionEvaluation.local() = NO_VALUE;
}
else
{
functionEvaluation.local() += d;
}
delete command_;
});
谢谢!