例:
class IGui{
protected:
virtual bool OnClicked(){return false;}
virtual bool OnHover(){return false;}
virtual bool OnScrollBarChange(){return false;}
virtual bool OnTextChange(){return false;}
...
}
class IGuiButton: public IGui{
protected:
virtual bool OnClicked() = 0;
virtual bool OnHover(){
do stuff
return true;}
...
}
ポイントは、(すべての仮想をオーバーライドする必要があるわけではありません) すべての GUI タイプに共通のインターフェイスを用意し、ボタンに軽量の特殊化を提供することですが、ボタンの場合、OnClicked のオーバーライドが必要です。
また、ボタンがプライベートをオーバーライドしてはならないものを作成する必要があると思います(したがって、プライベート継承を使用し、特定のものを保護するために「Base::Method; を使用する」という手の込んだものを使用しますか?