class CClientSocketList;//请问在类的前面写这一个语句是什么意思?
//为什么不能用#include "ClientSocketList.h"来代替?

class CClientSocket : public CSocket
{
// Attributes
public:// Operations
public:
CClientSocket(CClientSocketList *);
virtual ~CClientSocket();// Overrides
public:
CClientSocketList *List;
CClientSocket * Front;
CClientSocket * Next;
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CClientSocket)
public:
virtual void OnReceive(int nErrorCode);
virtual void OnClose(int nErrorCode);
//}}AFX_VIRTUAL // Generated message map functions
//{{AFX_MSG(CClientSocket)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG// Implementation
protected:
};

解决方案 »

  1.   

    class   CClientSocketList;  //类的前视声明
    //只是说明下面的类中可能会声明该类的对象或对象指针class   CClientSocketList不一定非得定义在文件ClientSocketList.h中
    class CClientSocketList很有可能在class CClientSocket后面定义,就是说它们可能在一个文件中定义
    并不一定存在ClientSocketList.h这个文件
      

  2.   

    //A.hclass B;
    class A  
    {
    public:
    A();
    virtual ~A();  B* b;};//B.hclass A;
    class B  
    {
    public:
    B();
    virtual ~B(); A* a;};这样可以编译,也可以使用A,B;但使用时要小心,以免死循环!
      

  3.   

    上面的都说了如果你class A 需要用class B 做成员变量,class B又需要class A做成员变量,头文件相互引用是不行地