我的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 ++中管理这种情况。