// EntryVisitor.h #ifndef ENTRYVISITOR_H #define ENTRYVISITOR_H class PersonEntry; class CompanyEntry; class GroupEntry; class EntryVisitor { public: virtual void visit(const PersonEntry &) = 0; virtual void visit(const CompanyEntry &) = 0; virtual void visit(const GroupEntry &) = 0; virtual void unVisit(const GroupEntry &) { } // In some cases, the composite node may need special processing after delegation to children }; #endif