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

时间:2015-05-18 08:30:28

标签: c++ c++11

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

class B;
class A{
  B object;
};

如果我声明它是B对象;我得到“对象有不完整的类型”。如果我将其声明为“B * object”,则编译成功结束。

为什么会这样? 我正在使用C ++ 11;

1 个答案:

答案 0 :(得分:3)

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