Виртуальный метод не вызывается

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

5
задан Shafik Yaghmour 10 April 2013 в 02:27
поделиться