2012-04-13 24 views
1

私はViewがCFormViewを継承するSDIプロジェクトに取り組んでいます。私はCView::OnUpdateを上書きしようとしていますが、コンパイラはそうのように文句を言う:私はこのようなルックスを上書きしようとしているCFormViewでCView :: OnUpdateをオーバーライドしようとしています

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); 
}; 

機能:

'CMyFormView::OnUpdate' : 'virtual' storage-class specifier illegal on function  

定義

をここに私のクラス定義です:

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(); 
} 

誰かがこれを修正する方法を教えてください。

答えて

3

"virtual"を関数定義(.cppファイル)に入れないでください。宣言(.hファイル)内にのみ置くことができます。それが基本クラス階層(CView?)ですでに仮想宣言されている場合は、同じ関数宣言を持つ場合は自動的に仮想になるため、 "virtual"キーワードは必要ありません。

+0

あなたが答えを投稿したのを見たとき、自分の質問に答えていました。ありがとう。 – rstackhouse

関連する問題