class A {
void func() { B* a = new B; }
};

class B {
//なんたらかんたら
};

とするとBが定義されていないってエラーが出ます。前方宣言もだめでした。
この場合BをAの前に持って行きたくない時はどうすればいいですか?