//A.cpp
#include "B.h"
class A
{
  void hogeA(){
    pB->hoge();
  };
  void hoge(){};
protected:
  B *pB;
}

//B.cpp
#include "A.h"
class B
{
  void hogeB(){
    pA->hoge();
  }
  void hoge(){};
  A *pA;
}

見たいなのを上手いことコンパイルするにはどうしたらいいでしょうか?
*注*
コンストラクタ、デストラクタ、
pA,pBを設定する部分については省略しています