相关疑难解决方法(0)

709
推荐指数
11
解决办法
17万
查看次数

声明的循环依赖

我正在尝试实现访问者模式的示例,但是我对类的声明的循环依赖有困难.在进行上课访客的申报的时候,俄罗斯和英格兰的班级不知道访问者有方法访问,但是在接受方法接受的访问者的申报的时候,需要使用英国和俄罗斯的班级,但是他们需要知道谁访问者是,因为他们在代码中使用此类型.我尝试了许多订购代码的变体,但我完全失败了.请帮助我理解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> …

c++ design-patterns

5
推荐指数
1
解决办法
2331
查看次数