【发布时间】:2011-05-04 21:09:55
【问题描述】:
如果我有一个 Container 类,其中包含一堆 Component 对象(类似于 Java 的 UI 框架),那么在每个 Component 中跟踪 Container 父级会是一种糟糕的风格/做法吗?
这最终会导致一些奇怪的编译器问题,因为Component 包含Container 的头文件,反之亦然。即使修复了标头保护,我最终还是不得不在 Container 标头之上声明原型 class Component;,Component 也是如此。
看起来你必须经历相当多的麻烦才能在两个类之间实现双向交互。为共同依赖“解决”的问题寻找另一种解决方案是可取的,还是这种复杂的实现是 C++ 预期的,我应该把它吸干?
编辑:也许一些上下文/推理会有所帮助。我使用这种共同依赖的原因是因为我需要在调用孩子的析构函数时通知父母(因此可以将其从孩子列表中删除),并且我还需要绘制孩子的位置是相对于父母的。
谢谢,
詹格勒
【问题讨论】:
-
我去掉了C标签,因为这确实是一个C++问题。
-
对我来说 GUI 标签是否合适也不是很明显 - 会让 Jengerer 重新考虑。
-
好吧,
Component和Container类用于我正在使用 C++ 开发的 GUI。不过,我同意这并不是那么必要。 -
如果一个类只包含一个引用或一个指针,那么你不需要完整的定义,因此你可以转发声明它而不是包含头文件。
标签: c++ oop header dependencies