我的课程目前看起来像这样:
GetAndSet{
virtual int get() = 0;
virtual void set() = 0;
}
WindowsGetAndSet : public GetAndSet{
virtual int get();
virtual void set();
}
然而,我遇到了一些新的限制,我意识到:
因此,我想做这样的事情:
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,还是我需要一起考虑一个新的设计?