避免课程没有见面? C ++

时间:2012-02-28 06:20:16

标签: c++ header linker

我刚刚进入地狱与建立项目。我在我的头文件中移动了一些东西,现在遇到一些事情,尽管我在每个头文件上都使用了#indef,#define和#endif,但有些对象看不到其他对象。

我注意到在我的一个旧文件中,我在名为World的类中使用了一个名为Region的类。

因为班级世界一直在抱怨无法看到其他班级,所以我能够通过简单地包括班级区域来克服它;在它之上。

有没有办法避免这样的事情?

谢谢。

1 个答案:

答案 0 :(得分:2)

我避免包含/依赖性问题的一种方法是尝试尽可能最小化声明类/结构定义(仅指针/引用,但是,感谢Aldo指出了这一点)。假设你有这门课程:

class foo
{
    bar* barObject;
};

显然,之前需要定义bar。我们可以简单地在foo定义之前添加以下行,而不是包含bar的头文件。

class bar;

这可以防止编译器抱怨未定义bar,但也不需要包含整个头。 (称为前瞻性声明)

我发现这可以最大限度地减少很多的麻烦,包括在存在循环依赖关系等时可能发生的问题。

这可能会对你的情况有所帮助,也可能没有帮助,因为用你提供的信息来诊断你的具体问题非常困难,但它可以提供一个起点。

更多阅读: http://www-subatech.in2p3.fr/~photons/subatech/soft/carnac/CPP-INC-1.shtml