1. 程式人生 > >MFC重寫CView的getDocument()函式沒有實現多型,只是靜態聯編

MFC重寫CView的getDocument()函式沒有實現多型,只是靜態聯編

class CsniffDoc : public CDocument

{

  public:
 void CapturePachet();

}

class majorView : public CFormView
{
public:
 CsniffDoc* GetDocument() const;

}

CDocument* currentDoc=GetActiveView()->GetDocument();

currentDoc->capturePachet();//

系統總是提示capturepachet()不是CDocument的成員函式,後來將加紅的兩條語句改成如下:

CsniffDoc* currentDoc=(CsniffDoc*)

GetActiveView()->GetDocument());

currentDoc->CapturePachet();

這樣就可以啦。

為什麼等號後面加個強制指標型別轉換?我查看了一下CFormview及其基類CView,發現getDocument()函式並沒定義為virtual。也就是說這裡邊並沒有用到多型的知識,只是靜態聯編而已。