Memento

どこかでインスタンスのスナップショットを取っておき、いざというときにその状態を復元するような仕組みをMementoパターンという。

18.Memento パターン | TECHSCORE(テックスコア)

main.cppで、

state->printで値を出力、state->nextで次の処理に進める。
途中、state->create_mementoでスナップショットmementoを作っておいて、一方で処理自体は進める。
state->set_mementoで取っておいたmementoをセットすると、その時の状態に戻る。

$ vi main.cpp 
$ g++ -o main main.cpp memento.cpp state.cpp 
$ ./main 
value_ = 0
value_ = 1
value_ = 2
value_ = 3
value_ = 4
value_ = 5
value_ = 3
$

mementoを取った時の3に戻っている。

Sample/designpattern/memento/memento/src/memento at master · bg1bgst333/Sample · GitHub