扩展一个海军模拟项目,我希望添加复合模式,以便我可以拥有对象组。这是当前层次结构的样子:
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
};
我有它的工作,但它只适用于船舶和船舶组。我想重用组代码(添加、删除、显示等),这样一个具体的组类(如 Island_group)就可以从中继承并使用它。我尝试更改 Ship_group 类从名为 Group 的公共基类继承的设计,但我遇到了一个菱形程序。
有什么办法可以根据类型重用我的组控制代码?