我正在开发一个SDI项目,其中View继承了CFormView。我试图覆盖CView::OnUpdate,但编译器抱怨如下:
'CMyFormView::OnUpdate' : 'virtual' storage-class specifier illegal on function
定义
这是我的班级定义:
class CMyFormView : public CFormView
{
…
// Overrides
public:
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual void OnInitialUpdate(); // called first time after construct
virtual void OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint);
};
我试图覆盖的功能如下所示:
virtual void CMyFormView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
{
CFormView::OnUpdate(pSender, lHint, pHint);
//Get the current data from our document
CMyAppDoc* pDoc = GetDocument();
}
有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:3)
不要在函数定义(.cpp文件)中加入“virtual”。您只能将其放在声明(.h文件)中。如果它已在基类层次结构(CView?)中声明为虚拟,那么您根本不需要“virtual”关键字,因为如果您具有相同的函数声明它将自动为虚拟。