次のような「アクション」純粋抽象クラスを定義しました。
class Action {
public:
virtual void execute () = 0;
virtual void revert () = 0;
virtual ~Action () = 0;
};
また、ユーザーがクラスで実行できる各コマンドを表しました。
実際の元に戻す/やり直すには、次のようなことをしたいと思います:
元に戻す
Action a = historyStack.pop();
a.revert();
undoneStack.push(a);
やり直し
Action a = undoneStack.pop();
a.execute();
historyStack.push(a);
「アクション」はインスタンス化できない抽象クラスであるため、コンパイラは明らかにこれを受け入れません。
それで、すべてを再設計する必要がありますか、それともこの問題に対する簡単な解決策はありますか?