#pragma once #include #include class SqCommand; class UndoRedoStack { public: bool canUndo() const; bool canRedo() const; // execute the command, make undo record void execute(std::shared_ptr); void undo(); void redo(); private: std::list> undoList; std::list> redoList; }; using UndoRedoStackPtr = std::shared_ptr;