C++创建一个头来解决循环依赖是一个好主意吗?

Ale*_*rus 5 c++ circular-dependency header-files

我有一个开始变大的C++项目.我面临的情况是我有很多循环依赖的类.假设我有类A,B,C,D.为了解决这个问题,我创建了一个名为circular_dep.h的头文件

这个文件的内容是指向类的指针:

class A;
class B;
class C;
class D;
Run Code Online (Sandbox Code Playgroud)

这个标题现在包含在我所有类的标题中.这样,当我有循环依赖时,编译器停止抱怨.但是,每当我向项目添加一个新类时,我都必须将它添加到circular_dep.h中

我找不到更简单的方法来做到这一点,所以对我来说这是迄今为止最好的解决方案.我的问题是:适用于可能面临循环依赖问题的项目是否是一个好主意?或者这是一个糟糕的设计/糟糕或危险的做法?

GMa*_*ckG 2

你拥有的很好。我通常看到的命名后缀是_fwd.h/ _fwd.hpp/_fwd.hxx或您喜欢的任何变体.h。您可以在 Boost 中看到这一点,例如:Optional_fwd.hpp

(当然,减少循环依赖是一个很好的目标,但有些东西本质上是相互递归的,比如语法,所以你别无选择。)