JavaのStateパターンを移植してみようと思い、以下のように書いてみました。
VC2005でコンパイルしたところ

error C2512: 'A' : クラス、構造体、共用体に既定のコンストラクタがありません。

というエラーが出たのですが、どうしてエラーになるのでしょうか?
AやBにコンストラクタを追加しても解決せず、class Cの宣言をAより下に持っていくとエラーがなくなりました。
class A;
class B;
class C
{
B* b;
public:
C() : b(new A){}
};

class B
{
public
~B(){}
}

class C
{
public:
~C(){}
}