2012-02-29 41 views
1

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

+0

请将相关的语言标签添加到您的问题。 – 2012-02-29 21:16:13

+0

把他们铸成wh!! – stmax 2012-02-29 21:29:22

+0

@oli,对不起C++ – Aaron 2012-02-29 21:31:35

回答

2

这是一个愚蠢的想法,对于你坚持使用基本指针之一但可以自由修改类的情况。假设我们有:

struct InBetween : Rock, HardPlace { /* ... */ } 

,并假设你只有使用Rock -pointers。编辑Rock如下:

struct Rock 
{ 
    virtual HardPlace * get_other() const = 0; 
    // ... 
}; 

现在给每个派生类如下:

struct InBetween : Rock, HardPlace 
{ 
    virtual HardPlace * get_other() const { return this; } 
    // ... 
}; 

现在,给Rock * r,你可以说​​。

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