我的一个\头文件里面需要用另外一个类
而这个类里面又需要用这个头文件的类就是这两个类相互引用了应该怎么实现啊我在一个头文件里前面申明了一下
class CMain;可是老是提示       c:\documents and settings\administrator\桌面\chart\chart\chartclient\socketclient.h(15) : see declaration of 'CMain'

解决方案 »

  1.   

    在每个头文件里加入#pragma once在其中一个需用到另一个头文件的的头文件里加入该类的声明
      

  2.   

    ompiling...
    SocketClient.cpp
    C:\Documents and Settings\Administrator\桌面\Chart\Chart\ChartClient\SocketClient.cpp(52) : error C2027: use of undefined type 'CMain'
            c:\documents and settings\administrator\桌面\chart\chart\chartclient\socketclient.h(14) : see declaration of 'CMain'
    C:\Documents and Settings\Administrator\桌面\Chart\Chart\ChartClient\SocketClient.cpp(52) : error C2227: left of '->GetMessageA' must point to class/struct/union
    C:\Documents and Settings\Administrator\桌面\Chart\Chart\ChartClient\SocketClient.cpp(56) : error C2027: use of undefined type 'CMain'
            c:\documents and settings\administrator\桌面\chart\chart\chartclient\socketclient.h(14) : see declaration of 'CMain'
    C:\Documents and Settings\Administrator\桌面\Chart\Chart\ChartClient\SocketClient.cpp(56) : error C2227: left of '->RemoveUser' must point to class/struct/union
    C:\Documents and Settings\Administrator\桌面\Chart\Chart\ChartClient\SocketClient.cpp(60) : error C2027: use of undefined type 'CMain'
            c:\documents and settings\administrator\桌面\chart\chart\chartclient\socketclient.h(14) : see declaration of 'CMain'
    C:\Documents and Settings\Administrator\桌面\Chart\Chart\ChartClient\SocketClient.cpp(60) : error C2227: left of '->UpdateUser' must point to class/struct/union
    Error executing cl.exe.
    Creating browse info file...
    BSCMAKE: error BK1506 : cannot open file 'Debug/ChartClient.bsc': Permission denied
    Error executing bscmake.exe.ChartClient.exe - 7 error(s), 0 warning(s)
      

  3.   

    #if !defined(AFX_CLIENTSOCKET_H__DDE7D64D_BB03_433F_9289_9E65E096B369__INCLUDED_)
    #define AFX_CLIENTSOCKET_H__DDE7D64D_BB03_433F_9289_9E65E096B369__INCLUDED_#pragma once
    #include "tagHeader.h"
    // SocketClient.h : header file
    //
    /////////////////////////////////////////////////////////////////////////////
    // CSocketClient command target
    class CMain;
    class CSocketClient : public CSocket
      

  4.   

    #if !defined(AFX_MAIN_H__08EFA5C5_482B_4848_8738_1941C53010DD__INCLUDED_)
    #define AFX_MAIN_H__08EFA5C5_482B_4848_8738_1941C53010DD__INCLUDED_#pragma once// Main.h : header file
    ///////////////////////////////////////////////////////////////////////////////
    // CMain dialogclass CMain : public CDialog
    {
      

  5.   

    不知道哦
    我是这样做的
    #pragma once#include ".\two.h"class COne
    {
    public:
    COne(void);
    ~COne(void); CTwo *m_pTwo;
    };
    #pragma onceclass COne;class CTwo
    {
    public:
    CTwo(void);
    ~CTwo(void); COne *m_pOne;
    };
      

  6.   

    你在SocketClient.h里面好像没有包含cmain的头文件
      

  7.   

    // SocketClient.h : header file
    //
    /////////////////////////////////////////////////////////////////////////////
    // CSocketClient command target
    class CMain;
    -----------------
    你在这里声明了CMain
    但你在SocketClient.cpp里用到了CMain,但没有它的头文件
    你在SocketClient.cpp加入CMain的头文件试试看
      

  8.   

    相互引用至少有一方只能用指针
    CMain* xx;试试