试图在CFormView中覆盖CView :: OnUpdate

时间:2012-04-13 16:54:18

标签: mfc compiler-errors

我正在开发一个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();
} 

有人可以告诉我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

不要在函数定义(.cpp文件)中加入“virtual”。您只能将其放在声明(.h文件)中。如果它已在基类层次结构(CView?)中声明为虚拟,那么您根本不需要“virtual”关键字,因为如果您具有相同的函数声明它将自动为虚拟。