У меня есть следующая иерархия:
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*);
};
EDIT: необходимо добавить метод int getNum() в иерархию, которая будет предоставлять значение num. Однако для этого потребуется заново скомпилировать всю иерархию, а нам это не разрешено. Таким образом, мы должны изменить дизайн иерархии таким образом, чтобы перекомпиляция иерархии не потребовалась.