Panelという基本クラスがあり、ウィンドウに関する情報が格納されています。次に、すべてのコントロールのサブクラス(Button、Labelなど)があります。基本クラスには、コンストラクターvirtual void ApplySchemeSettings(Scheme* scheme) { }
内で呼び出されるメソッドがあります。Panel(Panel* parent)
ただし、サブクラスの代わりにApplySchemeSettings
、基本クラス(Panel
)からが呼び出されています。
class Panel
{
[...]
public:
virtual void ApplySchemeSettings(Scheme* scheme) { };
Panel(Panel* parent)
{
[...]
this->ApplySchemeSettings(scheme());
};
}
class Frame : public Panel
{
[...]
public:
void ApplySchemeSettings(Scheme* scheme)
{
this->border = scheme->GetBorder("FrameBorder");
}
}
ApplySchemeSettings
サブクラスはユーザーによって作成されているため、抽象として宣言することはできません。