海軍シミュレーション プロジェクトを拡張して、オブジェクトのグループを持つことができるように複合パターンを追加しようとしています。現在の階層は次のようになります。
class Sim_object {
};
class Ship : public Sim_object {
};
class Island : public Sim_object {
};
そして、これまでのところ私は思いついた:
class Sim_object {
// holds general sim functions
get_name()
};
// COMPONENT
class Ship_object : public Sim_object {
// holds ship functions
add()
remove()
attack()
move()
};
// COMPOSITE
class Group : public Ship_object {
// holds list of group ship functions
add()
remove()
attack()
move()
};
// LEAF
class Ship : public Ship_object {
// holds ship functions
attack()
move()
};
class Island : public Sim_object {
// holds island functions
};
私はそれを機能させていますが、船と船のグループに対してのみ機能します。Group コード (追加、削除、表示など) を再利用したいので、具体的な Group クラス (Island_group など) はこれを継承して使用できます。Ship_group クラスが Group という共通の基本クラスから継承する設計を変更しようとしましたが、ダイヤモンド プログラムに直面しました。
タイプに基づいてグループ コントロール コードを再利用する方法はありますか?