我正在使用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_;
});
谢谢!
this
版本进行访问。如果要按值捕获成员,则将其复制到本地,然后按值捕获该本地变量。 - Potatoswatter[&functionEvaluation, varModel_, =]
- BЈовићunique_ptr<>
的用法,或者指出一些相关的参考资料吗?谢谢。 - kiriloff[=,&functionEvaluation]
。 - kennytm