C++;特定继承示例 我是C++新手,好奇继承是否是这个例子的正确方法: 这个程序代表了一个游戏,X玩家可以用一些武器选择他们的宇宙飞船。类的结构如下所示:

C++;特定继承示例 我是C++新手,好奇继承是否是这个例子的正确方法: 这个程序代表了一个游戏,X玩家可以用一些武器选择他们的宇宙飞船。类的结构如下所示:,c++,inheritance,hierarchy,C++,Inheritance,Hierarchy,武器->飞船->玩家 武器代表基类,舰船从中派生。玩家将从船上派生。为什么是那样?因为我可以为PlayerOne创建一个对象,并访问它的所有飞船数据。武器对象将由向量动态创建 我知道这是一个很长的问题,但你真的可以帮助我开始继承。 提前谢谢 这不是继承的适当用途;构图更合适。玩家有船,船有武器,但玩家不是船,船也不是武器。在面向对象编程中,继承往往涵盖is-A关系。子类应该是超类的特化 所以,当决定船应该来自武器还是玩家应该来自船时,你需要问,“船是武器吗?”和“玩家是船吗?”。我想这两个问题的

武器->飞船->玩家

武器代表基类,舰船从中派生。玩家将从船上派生。为什么是那样?因为我可以为PlayerOne创建一个对象,并访问它的所有飞船数据。武器对象将由向量动态创建

我知道这是一个很长的问题,但你真的可以帮助我开始继承。
提前谢谢

这不是继承的适当用途;构图更合适。玩家有船,船有武器,但玩家不是船,船也不是武器。

在面向对象编程中,继承往往涵盖is-A关系。子类应该是超类的特化

所以,当决定船应该来自武器还是玩家应该来自船时,你需要问,“船是武器吗?”和“玩家是船吗?”。我想这两个问题的答案可能都是否定的

更确切地说,玩家有武器,或者玩家有船,或者船有武器。有一种关系最好用构图来描述;你的玩家类应该拥有一个武器的实例(或者武器的数据结构)以及一个舰船的数据结构


您可能希望使用继承来专门化武器和行为的类型。所以你可以有一个激光束类和一个光剑类,每一个都来自武器,每个玩家都有一个不同的范围属性。

你可以使用一些其他的替代方法,而不是继承。这将有助于你的代码的长期运行。

所以每个玩家都是一艘飞船,每艘飞船都是一件武器。但我不确定是否认为层次结构是以这种方式使用的。这应该是组合,而不是继承。“玩家是一艘飞船”有什么意义?仔细想想——飞船是一种特殊的武器,而玩家在现实世界中又是一种特殊的飞船吗?毫无意义,但这就是我要问的:这不符合逻辑,但我可以通过玩家对象访问每个变量谢谢你的快速回复!这就是我要问的唯一的选择就是构图,不是吗?这既没有建设性也没有帮助。