开始在 CMyDoc* GetDocument(); 处老提示错误:
     syntax error : missing ';' before '*'
后来我将句子改为class CMyDoc* GetDocument();后就通过了,但是我就不懂了,本来CMyDoc就是一个class嘛,为什么还要在前面加上"class"呢? 好奇怪的语法啊.
   谁帮忙解释一下.

解决方案 »

  1.   

    你肯定是没包含CMyDoc的头文件, 编译器就不知道CMyDoc是什么了。
      

  2.   

    包含了,如果没包含的话,即使加了class也应该报错啊.
       现在我想知道的是class CMyDoc* GetDocument();中class作何解释?这个句法以前从没遇到过,总觉得不对似的
      

  3.   

    >如果没包含的话,即使加了class也应该报错啊.我把    class CMyDoc* GetDocument();
    这句加到我的头文件中, 没问题。
    因为用的的是指针, 所以只要有类型说明一下就可。
    具体的声明在正式用时编译器才会要。
      

  4.   

    开始是在myview.cpp里包含了CMyDoc头文件,当我头文件移到myview.h里后就行了.为什么?
      

  5.   

    唉, 看在100分的面上,再说一下:
    编译器处理CMyDoc* GetDocument();
    还没包含它的头, 因此不知CMyDoc是什么, 报错。变成class CMyDoc* GetDocument();后,
    编译器知道它是个class, 因为现在没有用到它, OK, 通过编译,继续。当你在cpp中写这个函数时, 若是还没有CMyDoc的声明, 
    编译器就肯定继续了。 而你在这里包含了CMyDoc头文件,
    因此没有问题。
      

  6.   

    同意楼上说的,类的预声明,不信你在该文件的比较靠前的地方写上 class CMyDoc;结果是一样的。如下所示:....
    class CMyDoc;
    ....
    CMyDoc* GetDocument()
    {
    ...
    } 呵呵
      

  7.   

    only declare that it is a class