VC++.netで書いてるんですが、
class AとBの宣言をa.hとb.hに分けて書いて、
#include "b.h"
class A{
private:
B *b;
}
と書くと

error C2143: 構文エラー : ';' が '*' の前にありません。

と出ます。

#include "b.h"
class A{
private:
class B *b;
}
の場合大丈夫でした。
手元の本(独習C++)でこのように宣言されているところは見なかったんですが、
こう宣言して大丈夫なんでしょうか?