【发布时间】:2013-08-06 00:30:42
【问题描述】:
您好,我注意到如果我在 .cpp 中包含头文件,那么我可以创建该头文件类的对象。就像如果我在main.cpp 中包含A.h,那么我可以在main.cpp 中写A *a;。但是,如果我在另一个头文件中包含一个头文件,然后尝试创建包含的头文件的对象,这将不起作用。喜欢,
文件B.h:
#include "A.h"
class B
{
public:
B(){};
A *a;
};
我必须添加 A 类的前向声明才能使其工作。为什么?
【问题讨论】:
-
因为你没有给我们一个诚实的例子,而真正的头文件包含包含守卫?
-
@kerrek 是的,它包含警卫。
-
好吧。为您的问题制作一个代表性示例,我相信您即使不在这里发帖也能弄清楚:-)
-
请注意,
A *a并没有像您想象的那样声明A类型的对象。它声明了一个A*类型的对象。这样的对象在 C++ 中称为 pointer-to-A。
标签: c++ class header-files forward-declaration