为啥类的预声明不起作用

为什么类的预声明不起作用


class B;   //预声明

class A
{
public:
B b;
};

class B
{
public:
int a;
};


int main()
{

return 0;
}

编译环境vs2008,求解释

------解决方案--------------------
在前置声明时,我们只能使用的就是类的指针和引用(因为引用也是居于指针的实现的)。
------解决方案--------------------
定义一个对象需要用到他的定义式, b的定义式在后面  
------解决方案--------------------
只有向前声明的类是不完全定义的类,没有完全定义的类不能定义它的变量,只能定义它的指针或引用类型的变量。
------解决方案--------------------
道理很简单,定义它的变量时至少会调用它的构造函数,而前置声明并没有给出它的构造函数