在头文件中调用类名

dom*_*lao 5 c++

我只是偶然发现了一个c ++代码,例如在头文件的上半部分调用了一个类名

class CFoo;
class CBar
{
  ....
};
Run Code Online (Sandbox Code Playgroud)

我的问题是,是class CFoo为了什么?

非常感谢!

Wal*_*t W 15

这称为前瞻性声明.这意味着有一个名为CFoo的类,稍后将在文件中定义(或另一个包含).这通常用于类中的指针成员,例如:

class CFoo;
class CBar {
    public:
        CFoo* object;
};
Run Code Online (Sandbox Code Playgroud)

这是对C++编译器的一个提示,告诉它不要在没有定义的情况下使用类型名称,即使它还没有看到CFoo的完整定义.

  • 这些也可以放在头文件中; 假设CFoo引用CBar类(循环引用).无论如何,您有时需要在标题中使用前向声明,因为如果不知道另一个类存在,则无法完全定义一个类. (2认同)