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 ファイル) に "virtual" を入れないでください。宣言 (.h ファイル) にのみ入れることができます。基本クラス階層 (CView?) で既に virtual と宣言されている場合、同じ関数宣言がある場合は自動的に virtual になるため、「virtual」キーワードはまったく必要ありません。

于 2012-04-13T19:15:05.387 に答える