【发布时间】:2013-03-27 10:49:18
【问题描述】:
我的层次结构如下:
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 值的层次结构中。但是,这需要重新编译整个层次结构,我们不允许这样做。所以我们必须以某种方式改变层次结构的设计,以便不需要重新编译层次结构。
【问题讨论】:
-
你打算如何从多个元素中返回一个值?或者你能接受不知道哪个值来自哪个元素吗?
标签: c++ design-patterns visitor-pattern