类中能定义另一个类的对象吗?该怎么处理

类中能定义另一个类的对象吗?
class   B;
class   A
{
B   b;
};
class   B
{
A   a;
};

void   main()
{
}
编译器报错。
要怎么改?有多少钟改法?为什么要这么改?

------解决方案--------------------
class B;
class A
{
B* pb; //可以定义指针。因为指针不需要知道类的完整定义
//只需要知道类的声明就可以了,以后你可以在堆中建立这个
//指针指向的对象
};
class B
{
A* pa;
};


------解决方案--------------------
类A需知道各个成员的类型,大小,如果你的类B
此时仍未定义,那么它大小未知,这导致类B的大小未知,这是类A的定义无法完成
指针的话,32位机均为4字节,所以A定义的时候,A对象的大小与B对象大小这个无关,所以A的大小明确可知,当然可以定义
------解决方案--------------------
1:
class B;
class A
{
B *b;
};
class B
{
A *a;
};
------解决方案--------------------
yes