Visual C++ にて、

//a.h

include "b.h"
class B;
class A
{
 class B b*;
}

//b.h

include "b.h"
class A
class B : public A
{
 class A a*
}

とやると、
「定義されていない基本クラスが宣言されています」
というエラーがでます。
クラス B が クラス A を継承しない場合はエラーは出ません。

どのようにしたら、実装の形態を変えないでエラーを消せますでしょうか。
よろしくお願いします。