查找包含优于前向声明的用例

时间:2014-04-30 16:30:37

标签: c++ include dependencies forward-declaration

我现在正在重新分解我正在处理的c ++库(主要是遗留系统),我试图最小化这些包含产生的include指令和递归依赖。 另外,为了使前向声明处理变得简单易行,我在每个库中都维护了一个fwd.h(比如std中的iosfwd),这使得库的客户生活更轻松

是否存在包含应优先于前向声明(**两种情况下编译)的情况?**

在向前声明优先的时候,对学校书籍说明不感兴趣。也许有一点,前方宣言是颈部疼痛。 std,boost或其他成熟的库中的策略是什么?

注意:我的编译器是intel icc 12 - 仅支持C ++ 03,只有很少的C ++ 11功能,例如枚举的前向声明

ps:我已经通过类似的讨论进行了处理 - 似乎有一种情况是前向声明比包含更糟糕 - 当删除不完整类型的不完整对象时: [C++ Class forward declaration drawbacks?

2 个答案:

答案 0 :(得分:2)

#include永远不会比向前宣言更好。绝对必要时使用#include。 只有在需要完整类型信息时才需要#include,例如在包含类头文件中声明类成员或调用成员方法。在以下情况下,不需要:

  1. 使用指针/引用作为类成员
  2. 在函数签名(参数或返回类型)

答案 1 :(得分:0)

只有当代码无法编译时!始终使用并尽可能使用重构代码来使用#include上的前向声明。