Player
使わなくても使えるかがポイントTeam
です。その場合は、別のクラスであり、ネストされていない必要があります。適切に設計された従来の (OO) ソフトウェアでは、ほとんどのネストされたクラスは、外側のクラス内で排他的に使用され、プライベートです。または、それらはプロキシであり、外部クラスの関数からの戻り値に使用されますが、外部クラスのクライアントによって宣言されることはありません。
クラスメンバークラスの他の「ビュー」を作成することもお勧めです。たとえば、コンテナへのイテレータ。イテレータをメンバーにするか、フリー クラスにするかは、何よりもスタイルの問題です (ただし、一貫性を保つ必要があります)。主に名前に影響します(ContainerIterator
対Container::Iterator
)。
最後に、テンプレートは別の次元を導入します。 type のテンプレートを指定するとT
、このテンプレート内で、メンバー型を含む のメンバーを簡単に参照できT
ます。「無関係な」タイプを見つけることは不可能です。つまり、テンプレートを でインスタンス化するとT == Container
、Container::Iterator
は としてすぐに利用できtypename T:Iterator
ますが、 を見つける方法はありませんContainerIterator
。
あなたのクラスの名前を考えると、私はそれらが独立してTeam
いて1-n
、Player
. (また、両方ともエンティティ オブジェクトであり、コピー不可かつ割り当て不可にする必要があるのではないかと考えています。しかし、それは別の問題です。)