俺の質問はそうじゃない。
書き方が悪かった。
さっきのツリーをC++のクラスで書くと、

class GAME_CLASS{
   PARTY_CLASS partyClass;
   BATTLE_CLASS battleClass;
   (その他省略)
};

class PARTY_CLASS{
   CHARACTOR_CLASS *charactorClass;
   (その他省略)
};

class BATTLE_CLASS{
   ENEMY_CLASS *enemyClass;
   (その他省略)
};

こんな感じだ。
この状態で、charactorClassをbattleClassにどうやって渡すかって話だ。
battleClass.SetParty( &partyClass );もしくは
battleClass.SetCharactor( partyClass.charactorClass );
とかすんの?
同じ「GAME_CLASS」内に含まれてるクラス同士なのにわざわざ渡すのって気持ち悪くね?
しかも前者で渡されたらBATTLE_CLASS内でpartyClass->charactorClass[0]->weaponClass->weaponATとかでアクセスすんの?
なんかもうちょっきれいに書けないの?