#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'
#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'
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'
1、在CServerSocket.cpp中,运行可以通过
2、在CTansferDlg.cpp中运行,还是报同样的错误
互相包含的情况,参考:
//a.h
class b;
class a
{
b *pb;
...
};//b.h
#include "a.h"
class b
{
a obj;
...
};
现在放在CServerSocket.cpp,出现同样的错误
#include "Messg.h"
#include <winsock.h>
#include "ServerSocket.h"
//部分代码
public:
CServerSocket m_ServerSocket;//需要定义这个变量
//部分代码
#include "Messg.h"
#include <winsock.h>
#include "ServerSocket.h"
//部分代码
public:
CServerSocket m_ServerSocket;//需要定义这个变量
//部分代码
#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;
}
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个不会冲突?
#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();
};
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'
还有四条同上