C++ 如何在不修改元素的情况下在访问者模式中传递附加参数

C++ 如何在不修改元素的情况下在访问者模式中传递附加参数,c++,visitor,C++,Visitor,有一个代码: struct Element; struct Handler; // need to pass Handler at the same time struct Visitor { void visit(Handler& h, Element& e) {} }; struct Element { virtual void accept(/*Handler& h,*/ Visitor& v) { v.visit(/*

有一个代码:

struct Element;
struct Handler;

//  need to pass Handler at the same time
struct Visitor
{
    void visit(Handler& h, Element& e) {}
};

struct Element
{
    virtual void accept(/*Handler& h,*/ Visitor& v) {
        v.visit(/* h, */ *this);
    }
};

struct Handler
{
    void visitElement(Visitor& v) { e.accept(/* *this, */ v); }

    Element e;
};

是否有可能访问元素,使元素对处理程序类一无所知?

是否在
访问者
中存储对处理程序的引用?您可能会看到@Vittorio I遗漏了这一点。这是一个解决方案,但不是一个很好的解决方案,因为每次访问之前我都必须传递指针,就像这样:
v.setHandler(h);处理人、探视者(v)您可以在访问者构造函数中传递它。@Jarod我的意思是每次处理程序对象都是不同的。Handler是元素类的某种包装器,Visitor::visit方法也应该处理来自Handler的数据。现在的问题是如何自动将处理程序指针传递给访问者。