新手关于定义类的基础有关问题

新手关于定义类的基础问题
两个类 ,A类中成员函数调用B的成员函数,而B中也有成员函数调用A的成员函数
如果class A 放B 上面  编译错误就提示 找不到B,反过来放就找不到A,请问要怎么做呢
class A
{
      B b;
      b.funcB();

     void funcA()
     {   }

}
class B
{
      A a;
      a.funcA();
     void funcB()
     {   }
}


------解决思路----------------------
1、A和B合为一体

2、将A和B的实现不要放在头文件中,然后A和B的头文件分别增加对方的前向声明;最后在各自的.cpp文件中引用对方的.h,然后在cpp的函数中调用函数
------解决思路----------------------
如果OK的话, 请问A, B两个类的实例占多少内存?
------解决思路----------------------
A中有B,B中有A,无限嵌套
------解决思路----------------------
如果OK的话 叫我看看结果