Копирование значения, на которое указывает общий указатель - PullRequest
0 голосов
/ 28 мая 2020
• 1000
MCEngine(std::vector<Wrapper<SimulationEngine>> EngineVector, std::vector<std::vector<double>> covMatrix_);

Теперь в моем MCEngine я выполняю операцию с каждым из этих SimulationEngines несколько раз, и между этими моментами я хочу сбросить состояния, поэтому я хочу сделать что-то вроде:

std::vector<Wrapper<SimulationEngine>> tmpEngineVector(EngineVector); //Save original EngineVector for simulation next path

, а затем после операции:

EngineVector = tmpEngineVector;

Чтобы вернуть вектор в предыдущее состояние. Конечно, здесь это не работает, потому что то, что я в итоге делаю, просто создает копию функции, на которую указывает мой умный указатель, а не сохраняет состояние самой функции оценки. Есть ли простой способ обойти это, не делая его слишком грязным? Мне нужно использовать sharedpointer, потому что мне не нужны отдельные копии одной и той же функции оценки при выполнении операции (если бы я дважды поместил одну и ту же функцию оценки в вектор)

...