我在一个类中添加一个成员变量
class CMySocket : public CAsyncSocket
{public:
CMySocket();
virtual ~CMySocket();
private:
CTalkDlg* m_pDlg; //*******这里出错
};什么都还不做,就是放在这里
结果编译报错:--------------------Configuration: Talk - Win32 Debug--------------------
Compiling...
Talk.cpp
d:\works\msworks\talk\mysocket.h(23) : error C2143: syntax error : missing ';' before '*'
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'CTalkDlg' : missing storage-class or type specifiers
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'm_pDlg' : missing storage-class or type specifiers
Generating Code...
Compiling...
TalkDlg.cpp
d:\works\msworks\talk\mysocket.h(23) : error C2143: syntax error : missing ';' before '*'
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'CTalkDlg' : missing storage-class or type specifiers
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'm_pDlg' : missing storage-class or type specifiers
Generating Code...
Compiling...
MySocket.cpp
d:\works\msworks\talk\mysocket.h(23) : error C2143: syntax error : missing ';' before '*'
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'CTalkDlg' : missing storage-class or type specifiers
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'm_pDlg' : missing storage-class or type specifiers
Generating Code...
Error executing cl.exe.Talk.exe - 9 error(s), 0 warning(s)这是什么原因?!
我已经把#include "TalkDlg.h"加入到CMySocket.h里面了
//去掉private:
CTalkDlg* m_pDlg; //这个
就什么问题都没有
class CMySocket : public CAsyncSocket
{public:
CMySocket();
virtual ~CMySocket();
private:
CTalkDlg* m_pDlg; //*******这里出错
};什么都还不做,就是放在这里
结果编译报错:--------------------Configuration: Talk - Win32 Debug--------------------
Compiling...
Talk.cpp
d:\works\msworks\talk\mysocket.h(23) : error C2143: syntax error : missing ';' before '*'
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'CTalkDlg' : missing storage-class or type specifiers
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'm_pDlg' : missing storage-class or type specifiers
Generating Code...
Compiling...
TalkDlg.cpp
d:\works\msworks\talk\mysocket.h(23) : error C2143: syntax error : missing ';' before '*'
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'CTalkDlg' : missing storage-class or type specifiers
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'm_pDlg' : missing storage-class or type specifiers
Generating Code...
Compiling...
MySocket.cpp
d:\works\msworks\talk\mysocket.h(23) : error C2143: syntax error : missing ';' before '*'
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'CTalkDlg' : missing storage-class or type specifiers
d:\works\msworks\talk\mysocket.h(23) : error C2501: 'm_pDlg' : missing storage-class or type specifiers
Generating Code...
Error executing cl.exe.Talk.exe - 9 error(s), 0 warning(s)这是什么原因?!
我已经把#include "TalkDlg.h"加入到CMySocket.h里面了
//去掉private:
CTalkDlg* m_pDlg; //这个
就什么问题都没有
这样的相互引用 是不行的, 用向前声明:class CTalkDlg;class CMySocket : ....
{
....
CTalkDlg* m_pDlg;
};
在MySocket.cpp 里包含 TalkDlg.h.
#include "MySocket.h"
把这个去掉就好了可问题是我在CTalkDlg里面还要声明两个CMySocket的变量
private:
CMySocket m_sListenSocket;
CMySocket m_sConnectSocket;
如果把include "MySocket.h"去掉的话就不行了...你说“用向前声明:”是什么意思,能不能具体一点
“在MySocket.cpp 里包含 TalkDlg.h.” 又是怎么一回事?
--------------------------------------------
楼主的意思应该是连下面这一句声明也去掉了,不然不会没有问题的
class CMySocket : ....
{
....
CTalkDlg* m_pDlg;
};
之前加入一句
class CTalkDlg;
就可以了
这就是向前声明?!能说明一下原因吗?