我正在尝试实现访问者模式的示例,但是我对类的声明的循环依赖有困难.在进行上课访客的申报的时候,俄罗斯和英格兰的班级不知道访问者有方法访问,但是在接受方法接受的访问者的申报的时候,需要使用英国和俄罗斯的班级,但是他们需要知道谁访问者是,因为他们在代码中使用此类型.我尝试了许多订购代码的变体,但我完全失败了.请帮助我理解C++需要什么才能得到这个.谢谢.
#include <cstdio>
#include <vector>
using namespace std;
class Visitor;
class Land {
public:
virtual void accept(const Visitor *v);
};
class England : public Land {
public:
void accept(const Visitor *v) {
v->visit(this);
}
};
class Russia : public Land {
public:
void accept(const Visitor *v) {
v->visit(this);
}
};
class Visitor {
public:
void visit(const England *e) const {
printf("Hey, it's England!\n");
}
void visit(const Russia *r) const {
printf("Hey, it's Russia!\n");
}
};
class Trip {
private:
vector<Land> …