Wenn virtuell nicht funktioniert

Ich habe im Moment einen seltsamen Fehler in meinen C ++ - Klassen. Ich habe eine ActiveX-Wrapper-Klasse (als Teil von wxWidgets), der ich eine neue virtuelle Funktion hinzugefügt habe. Ich habe eine andere Klasse, die von der ActiveX-Klasse (wxIEHtmlWin) erbt, aber die ActiveX-Klasse ruft immer ihre eigene Funktion auf, anstatt die in wxIEHtmlWin, die sie überschreibt.

Ich kann nicht herausfinden, warum das passiert. Ich habe die Funktion rein virtuell gemacht und jetzt stürzt das Programm ab, wenn es den Funktionsaufruf ausführt, aber ansonsten funktioniert es einwandfrei. Gibt es eine Möglichkeit, virtuelle Funktionen zu deaktivieren, oder habe ich einen Fehler in Visual Studio gefunden?

ActiveX Klasse

protected:
virtual FrameSite* getNewFrameSite()=0;

wxIEHtmlWin class

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

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

Bearbeiten: Ich habe eine weitere Testfunktion hinzugefügt (gibt ein int zurück) und versaut immer noch.

Link zum fraglichen Code:http: //lodle.net/public/iebrowser.ra

Bearbeiten

OK dank der Antwort unten habe ich es zum Laufen gebracht. Was ich getan habe, war die ActiveX-Klasse in zwei Teilen zu erstellen (wie vorgeschlagen), aber in wxIEHtmlWin habe ich den zweiten Teil im Konstruktorcode aufgerufen. Wie so:

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();
}

etzt weiß ich, warum wxWidgets die Konstruktion von zwei Teilen unterstütz

Antworten auf die Frage(4)

Ihre Antwort auf die Frage