/** * visitor.h * Implemented by Blueprint Technologies, Inc. */ #ifndef _visitor_h #define _visitor_h /** * Forward declarations. */ class Element; class ConcreteElement; /** * Declares a visit operation for each class of ConcreteElement * in the object structure. The operation's name and signature * identifies the class that sends the Visit request to the visitor. */ class Visitor { public: void visitConcreteElement( ConcreteElement* ) = 0; }; /** * Implements each operation declared by Visitor. */ class ConcreteVisitor: public Visitor { public: void visitConcreteElement( ConcreteElement* element ) { }; }; /** * Defines an Accept operation that takes a visitor as an argument. */ class Element { public: void accept( Visitor* ) = 0; }; /** * Implements an Accept operation that takes a visitor as an argument. */ class ConcreteElement: public Element { public: void accept( Visitor* visitor ) { }; }; #endif