如果建立一个MFC(.exe)工程名为Text,则在CTextDocument类里新建一个变量,比如protecte: int i;那么在CTextView类里调用GetDocument()函数后,可调用变量,但是如果声明为private: int i;则不可调用,什么原因呢?

解决方案 »

  1.   

    权限问题。
    private变量只能由本类及友类对象调用。
      

  2.   

    权限问题。
    private变量只能由本类及友类对象调用。
    -----------------------------------很好,我都忘记友元了呢,呵呵.
      

  3.   

    但是protecte变量不是只能被继承类对象调用吗??
      

  4.   

    但是protecte变量不是只能被继承类对象调用吗??
      

  5.   

    查了下书,CDocument确实是CView的友元类
    CView的友元类都是MVC架构中的,文档类,CDocument, COleServerDoc, CDocObjectServer, 框架类:CDocTemplate, CFrameWnd, CMDIFrameWnd, 控制器类:CMIDFrameWnd, CMDIChildWnd, 视图类有:CPreviewView
      

  6.   

    问题又来了,好像有元类应该能访问私有变量,所以申明为private类型应该也行,但事实上不行!!!!!!!!!!!
      

  7.   

    Cview 继承自Cwnd
    CDocument 继承自 CCmdTarget
      

  8.   

    我知道,我是问它们可以相互使用protect变量,why?
      

  9.   

    在继承关系中,基类的private成员不但对应用程序隐藏,即使是派生类也是隐藏不可访问的,而基类的保护成员只对应用程序隐藏,对于派生类来说是不隐藏的