标签: c++ c++11
我在一个类中声明了一个对象:
class B; class A{ B object; };
如果我声明它是B对象;我得到“对象有不完整的类型”。如果我将其声明为“B * object”,则编译成功结束。
为什么会这样? 我正在使用C ++ 11;
答案 0 :(得分:3)
当声明为B object;时,A需要B的完整定义,因此编译器知道它有多大,因此知道A有多大。当声明为指针时,不需要此信息,因为在给定平台上所有指针的大小都相同。
B object;
A
B