メンバ関数ポインタの代入がコメント化した部分でコンパイルエラーがでてしまいます。

class B{
public:
 void func(void){}
 B(void)
 {
  void (B::*p)(void);
//  p=B::func;//エラー メンバー関数は呼び出すかそのアドレスをとらなければならない
 }
};

class C{
 public:
 C(void){
  void (B::*p)(void);
  p=B::func;
 }
};

int main(void){
 B b;
 C c;
 void (B::*p)(void);
 p=B::func;
 return 0;
}

他のクラスやmain関数では上手くいくのに…納得できません
class Bのコンストラクタ内でBのメンバ関数ポインタの代入はできないのでしょうか