我已经定义了一个像这样的“Action”纯抽象类:
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);
编译器显然不接受这一点,因为“Action”是一个不能被实例化的抽象类。
那么,我必须重新设计所有东西还是有一个简单的解决方案来解决这个问题?