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的数据。现在的问题是如何自动将处理程序指针传递给访问者。