以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码
//Memento.h
#pragma once #include<string> class Memento; class Originator{ public: typedef std::string State; Originator(); virtual ~Originator(); Originator(const State& st); Memento* createMemento(); void SetMemento(Memento* men); void RestoreMemento(Memento* mt); State Getstate(); void Setstate(const State&sdt); void PrintState(); protected: private: Memento* _mt; State _st; }; class Memento { public: protected: private: friend class Originator; typedef std::string state; Memento(); virtual ~Memento(); Memento(const state &sdt); void SetState(const state& sdt); state GetState(); state _st; };
//Memento.cpp
#include"Memento.h" #include<iostream> typedef std::string state; Originator::Originator() { _st = '