class CMainFrame;
class CRequest : public CSocket{
public:
CMainFrame *m_pMainFrame;
public:
CRequest(CMainFrame *pMainFrame);
virtual ~CRequest();
}上面那个class CMainFrame;是什么意思?为什么要写在这里?
同时,#include "MainFrm.h"还必须写在Request.cpp中,不能写在Request.h(否则会编译不过),为什么?

解决方案 »

  1.   

    预先声明,使得CMainFrame *m_pMainFrame;
    不会编译出错
    ,#include "MainFrm.h"还必须要是因为CMainFrame的具体
    的声明在那里
      

  2.   

    to HateWindows(茫然瞪着屏幕) 
    事实就是我说的那个样子,我没写错。
    #include "MainFrm.h"还必须写在Request.cpp中,不能写在Request.h(否则会编译不过),为什么?(估计是与class CMainFrame;冲突)还有麻烦您解释一下class CMainFrame;的作用(写在Request.h中)
      

  3.   

    其实你也可以不用写class CMainFrame也可以,只要在request.cpp包含request.h之前包含mainfrm.h也可以:即
    #include "mainfrm.h"
    #include "request.h"
    在request.h包含"mainfrm.h"应该也不会出现什么问题,其实声明类class CMainFrame主要是为了减少编译上的连锁效应,若你更改了mainfrm.h,也就只需重新编译request.cpp,而不用编译包含request.h的cpp文件。
      

  4.   

    不对不对。
    在request.h中已经有
    public:
    CMainFrame *m_pMainFrame;#include "mainfrm.h"光写在request.cpp中有什么用?编译不过!
    写在request.h照样编译不过。请两位留下mail,我把它发给你们。
      

  5.   

    #include "mainfrm.h"写在request.cpp中应该是可以的,但一定要在"request.h"之前。
      

  6.   

    class CMainFrame;
    情况如先定义一个空指针,这是定义一个空类,到程序初始化再定位。MSDN下的Samples\VC98\MFC好多例子都是这样。
      

  7.   

    to webber84(糕鱼昏) 
    #include "mainfrm.h"写在"request.h"之后一点问题没有。诸位高手能留下mail吗?我发给你们。
    也欢迎你们加小弟QQ: 76628305
     MSN:[email protected]