Cuando lo virtual no funciona
Tengo un error extraño en mis clases de C ++ en este momento. Tengo una clase de contenedor ActiveX (como parte de wxWidgets) a la que agregué una nueva función virtual. Tengo otra clase que hereda de la ActiveX (wxIEHtmlWin), sin embargo, la clase ActiveX siempre llama a su propia función en lugar de la de wxIEHtmlWin que la anula.
No puedo entender por qué sucede esto. Hice la función puramente virtual y ahora el programa se bloquea cuando realiza la llamada a la función pero de lo contrario se compila bien. ¿Hay alguna forma de deshabilitar las funciones virtuales o he encontrado un error en Visual Studio?
Clase ActiveX
protected:
virtual FrameSite* getNewFrameSite()=0;
clase wxIEHtmlWin
class wxIEHtmlWin : public wxActiveX
{
protected:
FrameSite* getNewFrameSite();
}
FrameSite* wxIEHtmlWin::getNewFrameSite()
{
return new gcFrameSite(this);
}
Editar: agregué otra función de prueba (devuelve un int) y todavía la arruino.
Enlace al código en cuestión:http://lodle.net/public/iebrowser.rar
Editar:
OK, gracias a la respuesta a continuación, lo hice funcionar. Lo que hice fue crear la clase activex en dos partes (como se sugiere), sin embargo, en wxIEHtmlWin llamé a la segunda parte en el código del constructor. Al igual que:
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();
}
Ahora sé por qué wxWidgets admite la construcción en dos partes.