奇怪包括依赖

时间:2016-05-17 12:39:09

标签: c++ include

不幸的是我得到了一个包含结构,这导致了一个问题,即Z类需要包含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"。 我无法使用前向解除,因为在每个类中我都会调用我包含的类的函数。

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

1 个答案:

答案 0 :(得分:1)

  

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

不,不是快速修复。您需要重新构建代码,至少需要w.r.t.到包括。

你可以探索模板来提供帮助,但它们可能更麻烦。

除非&#34;是-a&#34;关系适用,您可以删除A作为基类并将其移至成员(通过。std::shared_ptr<A>std::unique_ptr<A>)并转发声明A。如果&#34;是-a&#34;关系是适用的,那么你有循环依赖,你需要以某种方式打破(再次,智能指针可以帮助)。

您没有提及cpp文件的使用或要求;使用cpp文件(Z.cpp)来隔离调用A成员的代码,这样就降低了标题要求。