class AAA
{
private:
class BBB;
BBB b;
public:
class BBB{ };
};

これをコンパイルしようとすると、「bの定義がないYO」と言われます。
publicとprivateの位置関係を換えると通るのですが、
位置入れ替えなしでうまくできないのでしょうか?