Defining Visitables - GerdHirsch/Cpp-VisitorFrameworkCyclicAcyclic GitHub Wiki

next

Create a Header for each Type you want to make visitable, and let it inherit from Repository::VisitableImpl<..>.

#include "MyRepository.h"
class E1 : public Repository::VisitableImpl<E1>
{
public:
    void operation() {...}
    std::string toString() const { return "E1"; }
};

Types that don't inherit from your Repository, like NonVisitable below can be adapted by an Adapter.

class NonVisitable{
public:
    int someOperation(){...}
    std::string toString() const { return "NonVisitable"; }
};

If you want to inherit from a "Visitable" like E1 above, choose the following syntax:

class E2 : public Repository::VisitableImpl<E2, E1>
{
public:
    std::string toString() const { return "E2"; }
};

The second argument to VisitableImpl<..> must be a type of Visitable.

see also SwitchCyclicAcyclicVisitables.h

next

⚠️ **GitHub.com Fallback** ⚠️