Visitor Header

namespace visitor_pattern

Namespace for the Visitor pattern.

class ConcreteVisitorA : public visitor_pattern::Visitor
#include <visitor.hpp>

Concrete VisitorA implements operations for ElementA and ElementB.

Public Functions

inline virtual void visitElementA(const ElementA &elementA) const override

Visit an ElementA instance.

Parameters:

elementA – The ElementA instance to visit.

inline virtual void visitElementB(const ElementB &elementB) const override

Visit an ElementB instance.

Parameters:

elementB – The ElementB instance to visit.

class ConcreteVisitorB : public visitor_pattern::Visitor
#include <visitor.hpp>

Concrete VisitorB implements operations for ElementA and ElementB.

Public Functions

inline virtual void visitElementA(const ElementA &elementA) const override

Visit an ElementA instance.

Parameters:

elementA – The ElementA instance to visit.

inline virtual void visitElementB(const ElementB &elementB) const override

Visit an ElementB instance.

Parameters:

elementB – The ElementB instance to visit.

class Element
#include <visitor.hpp>

Abstract base class for elements.

Subclassed by visitor_pattern::ElementA, visitor_pattern::ElementB

Public Functions

virtual ~Element() = default
virtual void accept(const Visitor &visitor) const = 0

Accept a Visitor.

Parameters:

visitor – The Visitor to accept.

class ElementA : public visitor_pattern::Element
#include <visitor.hpp>

Concrete ElementA class.

Public Functions

inline std::string operationA() const

Perform ElementA-specific behavior.

Returns:

A message describing the operation.

inline virtual void accept(const Visitor &visitor) const override

Accept a Visitor.

Parameters:

visitor – The Visitor to accept.

class ElementB : public visitor_pattern::Element
#include <visitor.hpp>

Concrete ElementB class.

Public Functions

inline std::string operationB() const

Perform ElementB-specific behavior.

Returns:

A message describing the operation.

inline virtual void accept(const Visitor &visitor) const override

Accept a Visitor.

Parameters:

visitor – The Visitor to accept.

class ObjectStructure
#include <visitor.hpp>

ObjectStructure manages a collection of elements.

Public Functions

inline void addElement(std::shared_ptr<Element> element)

Add an element to the structure.

Parameters:

element – The Element to add.

inline void accept(const Visitor &visitor) const

Accept a visitor for all elements.

Parameters:

visitor – The Visitor to accept.

Private Members

std::vector<std::shared_ptr<Element>> elements
class Visitor
#include <visitor.hpp>

Visitor interface declares operations for different types of Elements.

Subclassed by visitor_pattern::ConcreteVisitorA, visitor_pattern::ConcreteVisitorB

Public Functions

virtual ~Visitor() = default
virtual void visitElementA(const ElementA &elementA) const = 0

Visit an ElementA instance.

Parameters:

elementA – The ElementA instance to visit.

virtual void visitElementB(const ElementB &elementB) const = 0

Visit an ElementB instance.

Parameters:

elementB – The ElementB instance to visit.

Inner Classes

Inner Namespaces