多重继承和异构集合

Multiple inheritance and a heterogeneous collection

本文关键字:集合 异构 多重继承      更新时间:2023-10-16

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

这里有一个愚蠢的想法,针对的是您被一个基指针卡住但可以自由修改类的情况。假设我们有:

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

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