不幸的是我得到了一个包含结构,这导致了一个问题,即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"。 我无法使用前向解除,因为在每个类中我都会调用我包含的类的函数。
我希望有任何解决方案来解决这个问题。
答案 0 :(得分:1)
我希望有任何解决方案来解决这个问题。
不,不是快速修复。您需要重新构建代码,至少需要w.r.t.到包括。
你可以探索模板来提供帮助,但它们可能更麻烦。
除非"是-a"关系适用,您可以删除A
作为基类并将其移至成员(通过。std::shared_ptr<A>
或std::unique_ptr<A>
)并转发声明A
。如果&#34;是-a&#34;关系是适用的,那么你有循环依赖,你需要以某种方式打破(再次,智能指针可以帮助)。
您没有提及cpp文件的使用或要求;使用cpp文件(Z.cpp)来隔离调用A
成员的代码,这样就降低了标题要求。