我有三个继承自whirlyB
和gameCreature
的类。我在gameCreatures
的集合中使用了所有三个子类。有没有办法使用whirlyB
的继承功能。我只能选择使用gameCreature
函数。我该怎么做才能获得whirlyB
的功能?
答案 0 :(得分:2)
这是一个愚蠢的想法,对于你坚持使用其中一个基本指针但可以自由修改类的情况。假设我们有:
struct InBetween : Rock, HardPlace { /* ... */ }
并假设您只有Rock
- 指针可用。按如下方式修改Rock
:
struct Rock
{
virtual HardPlace * get_other() const = 0;
// ...
};
现在为每个派生类添加以下内容:
struct InBetween : Rock, HardPlace
{
virtual HardPlace * get_other() const { return this; }
// ...
};
现在,给定Rock * r
,您可以说HardPlace * h = r->get_other()
。
我不会真的称之为好设计,甚至不值得推荐,但我认为这是对你问题的字面答案。