У меня есть базовый класс 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
абстрактными, потому что подклассы создаются пользователем.