奇怪的包含依赖

strange include dependency

不幸的是,我得到了一个包含结构,它导致了 class Z 由于继承需要包含 class A 的问题,但 Z 被首先包含。 更清楚一点:

A.h includes B.h
B.h includes C.h
C.h includes D.h
D.h includes Z.h

所以 Z 在 A 之前定义。这会导致错误 "Baseclass A undefined"。 我不能使用前向减速,因为在每个 class 中我调用了我包含的 classes 的函数。

我希望有任何解决方案可以解决这个问题。

I hope there is any solution to come around that problem.

不,不是快速修复。您需要重构您的代码,至少 w.r.t。包括在内。

您可以探索模板来提供帮助,但它们可能比需要的更麻烦。

除非 "is-a" 关系适用,您可以删除 A 作为基础 class 并将其移动为成员(通过。 std::shared_ptr<A>std::unique_ptr<A>) 并向前声明 A。如果 "is-a" 关系适用,那么您将需要以某种方式打破循环依赖(同样,智能指针可以提供帮助)。

你没有提到cpp文件的用途或要求;使用 cpp 文件 (Z.cpp) 隔离调用 A 成员的代码,这样 header 要求就会降低。