仅存在声明时不包括类标题

Hum*_*awi 3 c++ declaration include forward-declaration c++11

我有以下情况:

class_a.hpp:

#include "class_b.hpp" // is this "include" mandatory?
class class_a{
private:
    class_b b;
};
Run Code Online (Sandbox Code Playgroud)

class_a.cpp:

#include "class_b.hpp"
//code that uses member variables and functions from class_b 
Run Code Online (Sandbox Code Playgroud)

class_b.hpp:

class class_b{};
Run Code Online (Sandbox Code Playgroud)

是否有可能摆脱#include "class_b.hpp"class_a.hpp?既然只是宣言,为什么我不能只使用前瞻声明而不包括它?(我试过但是没有编译)

当然我已经包括在内class_b.hppclass_a.cpp.

Vit*_*meo 9

由于class_b需要在class_a没有任何间接(例如指针)的情况下存储在内部,因此class_b在声明期间需要知道大小class_a.为了知道大小,class_b需要提供的声明:#include因此需要该指令.