我现在正在重新分解我正在处理的c ++库(主要是遗留系统),我试图最小化这些包含产生的include指令和递归依赖。 另外,为了使前向声明处理变得简单易行,我在每个库中都维护了一个fwd.h(比如std中的iosfwd),这使得库的客户生活更轻松
是否存在包含应优先于前向声明(**两种情况下编译)的情况?**
在向前声明优先的时候,对学校书籍说明不感兴趣。也许有一点,前方宣言是颈部疼痛。 std,boost或其他成熟的库中的策略是什么?
注意:我的编译器是intel icc 12 - 仅支持C ++ 03,只有很少的C ++ 11功能,例如枚举的前向声明
ps:我已经通过类似的讨论进行了处理 - 似乎有一种情况是前向声明比包含更糟糕 - 当删除不完整类型的不完整对象时: [C++ Class forward declaration drawbacks?
答案 0 :(得分:2)
#include
永远不会比向前宣言更好。绝对必要时使用#include
。
只有在需要完整类型信息时才需要#include
,例如在包含类头文件中声明类成员或调用成员方法。在以下情况下,不需要:
答案 1 :(得分:0)
只有当代码无法编译时!始终使用并尽可能使用重构代码来使用#include
上的前向声明。