避免上课不见面?C++
Avoiding classes not seeing one another? C++
我刚刚开始将地狱与一个正在建立的项目链接起来。我在头文件中移动了一些东西,现在遇到了这样一个事实:尽管我在每个头文件上都使用了#indf、#define和#endif,但有些对象看不到其他对象。
我注意到,在我的一个旧文件中,我在一个名为World的类中使用了一个称为Region的类。
因为班级World一直抱怨看不到另一个班级,我可以通过简单地包括班级Region来克服它;
有什么办法可以避免这样的事情吗?
谢谢。
我避免包含/依赖问题的一种方法是尽可能少地声明类/结构定义(不过,由于Aldo指出了这一点,仅限于指针/引用)。假设你有这门课:
class foo
{
bar* barObject;
};
显然,bar需要在之前的某个点上定义。我们可以简单地在foo的定义之前添加以下行,而不是包含bar的头文件。
class bar;
这可以防止编译器抱怨没有定义bar,但也不需要包含整个头。(称为远期申报)
我发现这可以最大限度地减少许多讨厌的问题,包括当存在循环依赖关系等时可能发生的问题。
这对你的情况可能有帮助,也可能没有帮助,因为用你提供的信息很难诊断出你的具体问题,但它可以提供一个起点。
更多阅读:http://www-subatech.in2p3.fr/~光子/subatech/soft/canac/CPP-INC-1.shtml