仅当未声明为指针时才不完整类型

Incomplete type only if not declared as pointer

本文关键字:类型 未声明 指针      更新时间:2023-10-16

我在一个类中声明了一个对象:

class B;
class A{
  B object;
};

如果我声明它为B对象;我得到"对象类型不完整"如果声明为"B* object",则编译成功结束。

为什么会这样?我用的是c++ 11;

当声明为B object;时,A需要B的完整定义,以便编译器知道它有多大,从而知道A有多大。当声明为指针时,不需要此信息,因为在给定的平台上,所有指针的大小都是相同的。