我有一个层次结构如下:
class Element{ public : virtual void Accept(Visitor&) = 0
protected : Element(); int num;
};
class ElementA : public Element{
public : ElementA();
void Accept(Visitor& v) {v.Visit(this};}
};
class ElementB : public Element{
public : ElementB();
void Accept(Visitor& v) {v.Visit(this};}
class Visitor{
public: void Visit(ElementA*);
void Visit(ElementB*);
};
编辑: 需要将方法 int getNum() 添加到提供 num 值的层次结构中。但是,这需要重新编译整个层次结构,我们不允许这样做。所以我们必须以某种方式改变层次结构的设计,以便不需要重新编译层次结构。