Я думаю, что следующие варианты лучше, чем использование ссылки на указатель.
Вариант 1
Использовать ссылку на сам объект MyStruct
вместо ссылки на указатель.
MyStruct ms1;
auto lambda = [&ms1]( const Foo& foo, u32 index )
{
ms1.sScore = foo.m_Score;
ms1.DoSomethingWith( index );
};
pProcessor->ApplyLambdaOn( lambda );
MyStruct ms2;
ms1 = ms2;
pProcessor->ApplyLambdaOn( lambda );
Вариант 2
Передайте объект MyStruct
лямбда-функции.
auto lambda = [&ms1]( const Foo& foo, u32 index, MyStruct& ms )
{
ms.sScore = foo.m_Score;
ms.DoSomethingWith( index );
};
Чтобы сделать это, pProcessor->ApplyLambdaOn
должен иметь доступ к объекту MyStruct
. Вы можете сделать это несколькими способами.
Сохраните объект MyStruct
в pProcessor
и используйте его при реализации ApplyLambdaOn
.
pProcessor->setData(ms1);
pProcessor->ApplyLambdaOn( lambda );
MyStruct ms2;
pProcessor->setData(ms2);
pProcessor->ApplyLambdaOn( lambda );
Передайте объект MyStruct
в ApplyLambdaOn
в качестве другого аргумента.
pProcessor->ApplyLambdaOn( lambda, ms1 );
MyStruct ms2;
pProcessor->ApplyLambdaOn( lambda, ms2 );