//Mysocket.h如下
#include "TalkDlg.h"
class CMySocket : public CAsyncSocket
{public:
void SetParent(CTalkDlg* pDlg);
private:
CTalkDlg* m_pDlg;//TalkDlg.h如下
#include "MySocket.h"
class CTalkDlg : public CDialog
{
 private:
CMySocket m_sListenSocket;
CMySocket m_sConnectSocket;  编译会出错,如果不是相互包含就不会出错了。
但是我又如上代码所示,需要相互包含的。

解决方案 »

  1.   

    将要用到的.cpp文件里加.h文件
      

  2.   

    更简单的方法,把两个类的定义写到同一个文件,实现也写到同一个文件//xx.h
    class CTalkDlg;
    class CMySocket : public CAsyncSocket
    {public:
    void SetParent(CTalkDlg* pDlg);
    private:
    CTalkDlg* m_pDlg;
    }
    #include "MySocket.h"
    class CTalkDlg : public CDialog
    {
     private:
    CMySocket m_sListenSocket;
    CMySocket m_sConnectSocket;
    }#include "MySocket.h"
    class CTalkDlg : public CDialog
    {
     private:
    CMySocket m_sListenSocket;
    CMySocket m_sConnectSocket;
      

  3.   

    你将
    class CMySocket : public CAsyncSocket
    {public:
    void SetParent(CTalkDlg* pDlg);
    private:
    CTalkDlg* m_pDlg;   /***************/////改为     CDialog *m_pDlg;在定义文件里包含#include "TalkDlg.h"将m_pDlg指向CTalkDlg对象就可以了。
      

  4.   

    //Mysocket.h如下
    每个头文件加上宏编译
    #if !define MySocket_h
    define MySocket_h
    #include "TalkDlg.h"
    class CMySocket : public CAsyncSocket
    {public:
    void SetParent(CTalkDlg* pDlg);
    private:
    CTalkDlg* m_pDlg;#endif#if !define TalkDlg_h
    define TalkDlg_h
    //TalkDlg.h如下
    #include "MySocket.h"
    class CTalkDlg : public CDialog
    {
     private:
    CMySocket m_sListenSocket;
    CMySocket m_sConnectSocket;  
    #endif