大変盛り上がっているところ、すみません。
別クラスのオブジェクトへのアクセスについて質問があります。

現在トランプゲームを作成していて、下記のクラス&オブジェクトがあります。
●基底クラスA(シーンを表すクラス)
├派生クラスA1─オブジェクトA1(タイトル画面)
├派生クラスA2─オブジェクトA2(1Pの行動シーン)─∞回繰り返す
└派生クラスA3─オブジェクトA3(2Pの行動シーン)─┘
●クラスB┬オブジェクトB1(1Pの手札)
      └オブジェクトB2(2Pの手札)
●クラスC─オブジェクトC(共通の山札)

私がやりたいことは、下記のとおりです。
・A2・A3ではB1・B2の手札がなくなったらゲームが終了するのでB1・B2にアクセスできるようにする。
・A2・A3ではCの山札がなくなったらゲームが終了するのでCにアクセスできるようにする。
・B1・B2ではCの山札の情報を取り込むのでCにアクセスできるようにする。

問題になっている点は下記のとおりです。
・"ClassB ObjectB1;"などの宣言をどこでするか。
・クラスA・B・Cそれぞれに、cppファイルとhファイルがありまして、
 どのファイルからどのファイルのヘッダをincludeしたら良いか。
・オブジェクト作成時にstaticを付けるのか付けないのかなどがよくわからない。

「私のやりたいこと」で述べたアクセスを実現するには、どうしたら良いのでしょうか。
簡単な骨組みを作っていただけませんでしょうか。おねがいします。