_AFXEXT_INLINE CEdit& CEditView::GetEditCtrl() const
{ return *(CEdit*)this; }
一个CEditView类如何像上面那样转成CEdit?请教!

解决方案 »

  1.   

    CEditView的继承关系如下:
    CEditView<-CtrlView<-CView<-CWndCEditCtrl直接继承于CWnd,而相对于CWnd它没有定义任何新的虚函数和数据成员,所以它的虚函数表与CWnd是一样的,这就使得转换后CEditCtrl不会调用不存在的虚函数。另外对于CEditCtrl来说,他所有的操作都是围绕着成员变量m_hWnd进行的,而这个变量直接继承于CWnd,因此上面的那个转换实际只是将CEditView的CWnd部分传给了CEditCtrl。
      

  2.   

    应该是CEditView提供了操作符重载,比如 operator CEdit*()
      

  3.   

    不是这样的,你可以看MSDN上的这篇文章:http://msdn.microsoft.com/msdnmag/issues/01/11/c/
      

  4.   

    那CEdit的构造函数是什么时候被调用的?