Я определил чистый абстрактный класс "Action", например:
class Action {
public:
virtual void execute () = 0;
virtual void revert () = 0;
virtual ~Action () = 0;
};
И представлял каждую команду, которую пользователь может выполнить с классом.
Для фактического отмены / повтора я хотел бы сделать что-то вроде этого:
Undo
Action a = historyStack.pop();
a.revert();
undoneStack.push(a);
Redo
Action a = undoneStack.pop();
a.execute();
historyStack.push(a);
Компилятор, очевидно, не принимает это, потому что "Action" - это абстрактный класс, который не может быть истанирован.
Итак, я должен все переделать или есть простое решение этой проблемы?