1

我正在开发一个视图继承 CFormView 的 SDI 项目。我试图覆盖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();
} 

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

4

1 回答 1

3

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

于 2012-04-13T19:15:05.387 回答