避免上课不见面?C++

Avoiding classes not seeing one another? C++

本文关键字:见面 C++ 不见      更新时间:2023-10-16

我刚刚开始将地狱与一个正在建立的项目链接起来。我在头文件中移动了一些东西,现在遇到了这样一个事实:尽管我在每个头文件上都使用了#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