我在文件“mtm_ex4.h
”中声明了一些数据类型,我希望(实际上需要)在“fan.h
”文件中使用。
问题是我在“mtm_ex4.h
”中使用了一些在“fan.h”中声明的其他数据类型
如何解决这种循环依赖?
答案 0 :(得分:3)
也许您“被允许”为它创建 前向声明标题 ?此类标头(例如<iosfwd>
)声明类型,常量等允许使用部分/全部完整标头(例如<iostream>
)功能,但某些类型可能不完整且仅可通过指针使用或参考。最好是从现有的头中包含这样的头以确保它们保持同步,并且至少那些不会引入不需要的依赖的东西(即需要支持#includes
),将客户端耦合到私有的内联实现成员/职能机构),以确保一个权威的定义地点。如果您在团队或公司工作,维护主标题的团队也应该维护前向声明标题。
尽管如此,你显然仍在使用限制,所以可能不得不选择较少的邪恶......
答案 1 :(得分:2)
你可以创建类似common.h文件的东西,它将声明mtm_ex4.h和fan.h使用的类型,并使这两个文件都依赖于common.h。