c++:尚未声明

C++: Has Not Been Declared

本文关键字:未声明 c++      更新时间:2023-10-16

我在任何地方都看到过这种类型的错误,尽管我看过答案,但似乎没有任何帮助。

我得到以下代码段的错误:

错误:'A'未被声明

B.h:

#include "A.h"
class B{
    public:
         static bool doX(A *a);
};

A.h:

include "B.h"
class A{};

运行我已经尝试过的事情的清单:—姓名拼写正确- A在A.h中—没有命名空间-无模板-没有宏

我有其他类可以找到A很好。我能想到的唯一一件事就是"静态"引起了问题。

include替换为前向声明:

//B.h
class A;
class B{
    public:
         static bool doX(A *a);
};

只在必要时包含文件。

同样,使用include守卫。这将防止其他棘手的问题,如重新定义& &;div。

如果你有两个头文件相互包含,你最终会产生一个循环依赖,并且由于预处理器的工作方式,这意味着一个头文件将在另一个头文件之前定义。

为了解决这个问题,我将避免在B.h中包含A.h,而只是向前声明:
class A;
class B{
    public:
         static bool doX(A *a);
};

可以在b.p中包含A.h。cpp