class A{
  B b;
};
class B{
  A a;
};

要はこれと同じ状態。前方宣言でも回避できない。これも
class A{
  A a;
};
という問題に帰着できるから分かるだろ