我已经定义“操作”纯粹的抽象类是这样的:抽象类问题在C++撤消/重做实施
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);
编译器显然不能接受这一点,因为“行动”是一个抽象的类别,不能孤立。
那么,我必须重新设计一切还是有一个简单的解决方案来解决这个问题?
不要忘记删除。智能指针和指针特定的容器(如Boost指针容器)相辅相成。 – GManNickG 2010-01-12 00:59:25
是的,谢谢,这里肯定会需要一个智能指针容器。 – 2010-01-12 01:00:17
虽然这些功能你想要一个'堆栈',而不是'矢量'。 :) – GManNickG 2010-01-12 01:11:52