为什么只有在定义了类的情况下才能将数据成员指定为类类型?(摘自"C++入门"一书)

gig*_*igi 4 c++ declaration definition incomplete-type

在"C++入门"一书中,有一节关于类声明和定义.我不明白这句话的一切:

只有在定义了类时,才能将数据成员指定为类类型.

我不明白这句话背后的逻辑.如何将数据成员指定为类类型,此操作的含义是什么?

son*_*yao 8

这意味着,对于类类型的非静态类数据成员的声明T,T需要完成.

(一般情况下,T必须知道大小和布局.)

例如

class foo;    // forward declaration
class bar {
    foo f;    // error; foo is incomplete
};
Run Code Online (Sandbox Code Playgroud)

另一方面,

class foo {}; // definition
class bar {
    foo f;    // fine; foo is complete
};
Run Code Online (Sandbox Code Playgroud)