多重继承和异构集合

时间:2012-02-29 21:12:00

标签: c++ polymorphism multiple-inheritance

我有三个继承自whirlyBgameCreature的类。我在gameCreatures的集合中使用了所有三个子类。有没有办法使用whirlyB的继承功能。我只能选择使用gameCreature函数。我该怎么做才能获得whirlyB的功能?

1 个答案:

答案 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()

我不会真的称之为好设计,甚至不值得推荐,但我认为这是对你问题的字面答案。