#include <AFxsock.h>
#include "TransferDlg.h"class CTansferDlg;class CServerSocket : public CSocket
{
public:
CTransferDlg *m_dlg;
void init(CTransferDlg *dlg);

virtual void OnAccept(int nErrorCode);
virtual void OnClose(int NErrorCode);
};
我想把嵌套类CServerSocket在 CTansferDlg完成
可老是提示:
error C2146: syntax error : missing ';' before identifier 'm_ServerSocket'
error C2501: 'm_ServerSocket' : missing storage-class or type specifiers
error C2039: 'HandelClose' : is not a member of 'CTransferDlg'
transferdlg.h(19) : see declaration of 'CTransferDlg'

解决方案 »

  1.   

    不好意思,看错了,是这段错误代码
    error C2143: syntax error : missing ';' before '*'
    error C2501: 'CTransferDlg' : missing storage-class or type specifiers
    error C2501: 'm_dlg' : missing storage-class or type specifiers
    error C2061: syntax error : identifier 'CTransferDlg'
      

  2.   

    删掉class CTansferDlg
    1、在CServerSocket.cpp中,运行可以通过
    2、在CTansferDlg.cpp中运行,还是报同样的错误
      

  3.   

    把#include "TransferDlg.h"放到cpp文件中
      

  4.   

    #include "TransferDlg.h"class CTansferDlg;这2个,没必要都用上。
    互相包含的情况,参考:
    //a.h
    class b;
    class a
    {
      b *pb;
      ...
    };//b.h
    #include "a.h"
    class b
    {
      a obj;
      ...
    };
      

  5.   

    TransferDlg.cpp文件中已经放了#include "TransferDlg.h"
    现在放在CServerSocket.cpp,出现同样的错误
      

  6.   

    CServerSocket.h中的#include "TransferDlg.h"删掉
      

  7.   

    按照ouyh12345的方法,依然是报同样的错
      

  8.   

    TransferDlg是Dialog对话框,不是单独定义的类
      

  9.   

    其它调用的类已经通过了,只有调用CServerSocket这个类时出的错在TransferDlg.h 中#include <afxtempl.h>
    #include "Messg.h"
    #include <winsock.h>
    #include "ServerSocket.h"
    //部分代码
    public:
    CServerSocket m_ServerSocket;//需要定义这个变量
    //部分代码
      

  10.   

    其它调用的类已经通过了,只有调用CServerSocket这个类时出的错在TransferDlg.h 中#include <afxtempl.h>
    #include "Messg.h"
    #include <winsock.h>
    #include "ServerSocket.h"
    //部分代码
    public:
    CServerSocket m_ServerSocket;//需要定义这个变量
    //部分代码
      

  11.   

    在ServerSocket.cpp中#include "stdafx.h"
    #include "Transfer.h"
    #include "ServerSocket.h"
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    #include "TransferDlg.h"
    void CServerSocket::OnAccept(int NErrorCode)
    {
    ASSERT(m_dlg)
    m_dlg->HandleAccept();
    CSocket::OnAccept(NErrorCode);

    }
    void CServerSocket::OnClose(int nErrorCode)
    {
    ASSERT(m_dlg);
    m_dlg->HandelClose();

    }
    void CServerSocket::init(CTransferDlg *dlg)
    {
    ASSERT(dlg);
    m_dlg=dlg;
    }
      

  12.   

    对应的错误是这个吗:
    error C2146: syntax error : missing ';' before identifier 'm_ServerSocket'
    error C2501: 'm_ServerSocket' : missing storage-class or type specifiers那得看ServerSocket.h另外
    #include <winsock.h>
    #include <AFxsock.h>
    这2个不会冲突?
      

  13.   

    在ServerSocket.h当中
    #if !defined(AFX_SERVERSOCKET_H__519704AA_0BA4_4ACD_B909_7F747F6DF6B5__INCLUDED_)
    #define AFX_SERVERSOCKET_H__519704AA_0BA4_4ACD_B909_7F747F6DF6B5__INCLUDED_#if _MSC_VER > 1000
    #pragma once
    #endif
    #include <AFxsock.h>
    class CTansferDlg;class CServerSocket : public CSocket
    {public:
    CTransferDlg *m_dlg;//此处报错
    void init(CTransferDlg *dlg);//此处报错

    virtual void OnAccept(int nErrorCode);
    virtual void OnClose(int NErrorCode);public:
    CServerSocket();
    virtual ~CServerSocket();
    };
      

  14.   

    错误信息:
    error C2146: syntax error : missing ';' before identifier 'm_ServerSocket'
    error C2501: 'CServerSocket' : missing storage-class or type specifiers
    error C2501: 'm_ServerSocket' : missing storage-class or type specifierssyntax error : missing ';' before '*'
    'CTransferDlg' : missing storage-class or type specifiers
    'm_dlg' : missing storage-class or type specifiers
    syntax error : identifier 'CTransferDlg'
    还有四条同上