我在我的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
编辑:
OK感谢回答以下我得到它的工作。我所做的是创建两个部分的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支持两部分构造。
我们可以看到整个wxActiveX类(或至少是一个减少,但在一个C++感觉版本中完成,展现了这个问题)?会不会有宏观干扰?如果可能的话,查看预处理文件。 – 2008-12-24 08:14:50
并确保你已经做了一个干净的。 – Artelius 2008-12-24 08:22:07