标题循环依赖

时间:2018-01-28 16:43:46

标签: c++

我的cpp项目中存在依赖项问题。 基本上我试图实现访问者模式并将所有类放在不同的文件中。

  

Base.h

#pragma once

class Visitor {}; //forward declaration

class Base {
    virtual void accept(Visitor&) = 0;
};
  

Visitor.h

class ConcreteBase1; //forward declaration
class ConcreteBase2;
class ConcreteBase3;

class Visitor {

protected:
    virtual bool visit(Circle*) = 0;
    .... //other versions of visit
};

class ConcreteVisitor1: public Visitor {//some code here};
class ConcreteVisitor2: public Visitor {//some code here};
class ConcreteVisitor3: public Visitor {//some code here};
  

ConcreteBase1.h

#pragma once
#include "Base.h"

class ConcreteBase1: public Base
{
public:
    void accept(Visitor&);
};
  

ConcreteBase1.cpp

#include "ConcreteBase1.h"
#include "Visitor.h"

void ConcreteBase1::accept(Visitor& visitor)
{
    visitor.visit(this);
}

错误出现在

行上
  

visitor.visit(本);

如果我交换#include" Visitor.h" #include" ConcreteBase1.h"我将另一个错误 - 我的cpp文件中将使用ConcreteBase1转发定义。我对c ++很陌生,首先我尝试用include来管理所有内容,之后我读到了有关前向声明的内容,但是现在我基本上无法理解如何在c ++中管理这种情况。

0 个答案:

没有答案