具体是这样的:
    我创建了一个名为GoBang的MFC单文档应用程序,现在我要在应用程序类CGoBangApp的InitInstance()
函数里调用视图类的test()函数,但是这样却出错了:
    代码:#include "GoBangView.h"//包含视图类的头文件
... ...
BOOL CGoBangApp::InitInstance()
{
     CGoBangView te;//申明一个视图类的对象供CGoBangApp使用
     te.test();
     ... ...}
出错详细信息:
1>------ 已启动生成: 项目: GoBang, 配置: Debug Win32 ------
1>正在编译...
1>GoBang.cpp
1>f:\towishfor\gobang\gobang\gobang.cpp(45) : error C2248: “CGoBangView::CGoBangView”: 无法访问 protected 成员(在“CGoBangView”类中声明)
1>        f:\towishfor\gobang\gobang\gobangview.h(11) : 参见“CGoBangView::CGoBangView”的声明
1>        f:\towishfor\gobang\gobang\gobangview.h(8) : 参见“CGoBangView”的声明
我用的是VS2008开发平台,XP系统,泪望好心人讲解....

解决方案 »

  1.   

    CGoBangView te;//申明一个视图类的对象供CGoBangApp使用 //这里view 的构造函数是protected 直接不能创建view
      te.test();
    你可以把test设为static 
    CGoBangView::test()调用
      

  2.   

    你的View类的构造函数是protected的
      

  3.   

    AfxGetMainWnd()->GetActiveView()->test()
      

  4.   

    这似乎不行吧。MFC的View-Doc是一套,你单独建一个View而且在应用程序框架都没初始化完成的情况下,似乎不现实哈。即便是可以通过Build,运行也必然有问题。
      

  5.   

        那也就是说如果A类的构造函数是protected的,在B类里面就无法创建A类的对象,那也就是说在B类里无法访问A类的任何成员,即使A类的其他成员是public。....
      

  6.   

       其实问题是这样的,我创建了一个名为GoBang单文档项目,其中CGoBangView类的test()函数里是一些图形界面的初始化操作,应为test()函数基本上只要调用一次,但test()又不能放在CGoBangView类的构造函数里,这样会报错,我也不想把test函数放在OnDraw()函数里,因为test的调用次数少,所以我想把test放在CGoBangApp类的InitInstance()函数里,结果编译不了。
        InitInstance()函数本身事初始化用例的吧....   泪望大家来评论,!!!
      

  7.   

    InitialUpdate,这是View类的一个方法,用于初始化View中的数据。
      

  8.   

      我不管你要做啥,反正,InitInstance()内部只做少量事情
          1)注册窗口
          2)生成:DOC\view\frame组合关系.
      你在这个地方显示图像是为难人家MFC.