0

目前我有两个类,Drawable 和 Transformable,并且像 Actors 这样的东西继承了这两个类,问题是当将对象绘制到屏幕上时,我遍历了一个 Drawables 向量,它没有包含在 Transformable 中的 getPosition() 函数。向 Drawable 添加一个虚拟 getPosition() 可以解决这个问题,但会在其他地方产生对该函数的模棱两可调用的问题。那么我可以让 Drawable 继承 Transformable 并让 Actor 继承 Drawable 并获得与继承这两个类一样的结果吗?

编辑:Drawables 不是所有的演员,有些是精灵(游戏对象),原始形状等。实际上,我在绘制循环中需要 getPosition() 的唯一原因是因为为了伪造深度,我循环遍历向量到从 0 Y 坐标到屏幕底部,屏幕上较高的对象首先被绘制,然后位于靠近“前面”的对象后面。我没有编写 Drawable/Transformable 类,我宁愿不必完全更改它们以满足一个实例中的一个函数调用。唯一出现问题的是当我引用 Drawables 的向量时。对我来说,为什么这样设计它并不完全有意义,因为使用可绘制类的所有东西也继承了可转换类,所以它们应该只是一个,但它们不是。

我的问题是这是否:

class foo {}
class bar{}
class foobar : public foo, public bar {}

和这个一样

class foo {}
class bar : public foo {}
class foobar : public bar {}

一个对象可以继承其父类继承的公共和受保护成员吗?

4

2 回答 2

0

在这种情况下,我会选择的设计是删除 Transformable 类,并将位置属性和成员函数移动到 Drawable 类。需要在某处绘制“可绘制”的东西,因此需要一个位置,无论它是否可以移动。

一个对象可以继承其父类继承的公共和受保护成员吗?

简短而甜蜜:是的。(仅当继承是publicprotected

有关继承类型的更多信息,请参阅此内容。

于 2013-10-27T13:44:08.413 回答
0

考虑一个不可绘制的对象是否会首先被转换。为什么要移动永远不会被看到的东西。

此外,getPosition (可能还有 setPosition)实际上不应该是可绘制的东西的一部分吗?你怎么知道在哪里画,否则。

我强烈建议仔细重新考虑你的类结构,结合常见的功能,不要仅仅因为你可以就拥有数百万个不必要的接口。

于 2013-10-27T13:44:47.503 回答