需要设计帮助,因为我正在创建一个具有多个继承的钻石

时间:2015-06-08 18:43:40

标签: multiple-inheritance

我的课程目前看起来像这样:

GetAndSet{ 
    virtual int get() = 0;
    virtual void set() = 0;
}

WindowsGetAndSet : public GetAndSet{
    virtual int get();
    virtual void set();
}    

然而,我遇到了一些新的限制,我意识到:

  • 有时我只需要获取方法
  • 每当我使用set方法时,我也需要get方法

因此,我想做这样的事情:

Get{ 
    virtual int get() = 0;

}

Set : public Get{
    virtual void set() = 0;
}

WindowsGet : public Get{
    virtual int get();
}    

WindowsGetAndSet: public WindowsGet, public Set{
    // inherits the get methods from WindowsGet
    virtual void set();
}

这导致我进入Diamond Problem,其中WindowsGetAndSet继承Get两次,一次来自Set,一次来自WindowsGet。

我可以简单地让Set和WindowsGet使用虚拟继承来继承Get,还是我需要一起考虑一个新的设计?

0 个答案:

没有答案