我是初学者,看了不少书了,这两天第一次动手写个程序,遇到不少问题,我想问问,请大家帮忙!
我编的这个是居于对话框的,主对话框类CChatDlg,然后我insert了一个类CMySocket,派生自AsyncSoket。因为MySocket类中要有个东西指回主对话框,我就在MySocket中添了成员CChatDlg *pDlg;在主对话框类中我也添加了两个成员,都是MySocket类的对象,用来分别作监听和连接。但是编译有40多个错误,说CMySocket中不知道pDlg是什么,CChatDlg中也不知道CMySocket类的那两个成员是什么。后来我就在CChatDlg.h中加了#include "MySocket.h",再编译后,说CChatDlg已经认识那两个CMysocket对象成员了。所以我同样在MySocket.h中也加了#include "CChatDlg",编译后又变成最初一个不认识一个了,还是40多个错误。
后来我一想也难怪,这样一搞变成a include b,而b又include a了,但是我又不知道如果不这样include,他们又怎么能够一个认识一个呢?不知道说清楚没有,初学者第一次写程序,第一次发言,请大家帮帮我

解决方案 »

  1.   

    主对话框的指针,可以通过AFXGETMAINWND()来获得,不用保存。如果两个类互相包含,下面是一种解决方法。把两个头文件合并到同一个文件,然后如下:class A;
    class B
    {
    A* pa;
    };
    class A
    {
    B* pb;
    };
      

  2.   

    我想你的CMySocket一定没有采用一次性行定义。#if !defined(AFX_代码中唯一的字符串)
    #define (AFX_代码中唯一的字符串)你的类定义、变量声明#endif // !defined(AFX_代码中唯一的字符串)
      

  3.   

    我是用AppWizard做的,把两个头文件合并后问题更多了。。:(