有一个代码:
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;
};
是否可以以这样的方式访问Element:Element对Handler类一无所知?