Когда виртуальный не работает

У меня странная ошибка в моих классах C ++ в данный момент. У меня есть класс-оболочка ActiveX (как часть wxWidgets), к которому я добавил новую виртуальную функцию. У меня есть другой класс, который наследуется от класса ActiveX (wxIEHtmlWin), однако класс ActiveX всегда вызывает свою собственную функцию вместо функции в wxIEHtmlWin, которая переопределяет ее.

Я не могу понять, почему это происходит. Я сделал функцию чисто виртуальной, и теперь программа вылетает при вызове функции, но в противном случае компилируется нормально. Есть ли способ отключить виртуальные функции или я обнаружил ошибку в Visual Studio?

ActiveX класс

protected:
virtual FrameSite* getNewFrameSite()=0;

wxIEHtmlWin класс

class wxIEHtmlWin : public wxActiveX
{
protected:
    FrameSite* getNewFrameSite();
}

FrameSite* wxIEHtmlWin::getNewFrameSite()
{
    return new gcFrameSite(this);
}

Редактировать: я добавил еще одну тестовую функцию (возвращает int) и все еще облажался.

Ссылка на рассматриваемый код:http://lodle.net/public/iebrowser.rar

Редактировать:

Хорошо, благодаря ответу ниже, я получил его на работу. Что я сделал, так это создал класс activex из двух частей (как предложено), однако в wxIEHtmlWin я назвал вторую часть в коде конструктора. Вот так:

wxIEHtmlWin::wxIEHtmlWin(wxWindow * parent, wxWindowID id, const wxPoint& pos,const wxSize& size,long style, const wxString& name) : wxActiveX()
{
    wxActiveX::Create(parent, PROGID, id, pos, size, style, name);
    SetupBrowser();
}

Теперь я знаю, почему wxWidgets поддерживает построение двух частей.

Ответы на вопрос(2)

Ваш ответ на вопрос