菜鸟的一个关于Csoket 的问题。

sjmr444 2007-11-23 06:33:51
我在网上看了一个简单的聊天程序,他的服务端建立了一个对话框的MFC工程叫Tcp。自己定义了一个监听类
class Listening : public CSocket
{
public:
Listening();
Listening(CTcpDlg *pdlg);
CTcpDlg *m_dlg;
virtual ~Listening();
virtual void OnAccept( int nErrorCode );
}
OnAccept我是这么写的
void Listening::OnAccept(int nErrorCode)
{

if(nErrorCode!=0)
{
AfxMessageBox("cannot accept listen");
return;
}
else
{
m_dlg->AcceptConnect();//AcceptConnect()是CTcpDlg中自己写的函数
}
CSocket::OnAccept(nErrorCode);

}

AcceptConnect()我是这么写的
void CTcpDlg::AcceptConnect()
{
m_pSocket=new Client(this);
if(!m_pSocket->Accept(*pSocket))
{
AfxMessageBox("cannot accept connect") ;
}
}
我想问的是m_pSocket=new Client(this)为什么一定要传this呢。我试了,如果不传this,虽然编译没问题。但是程序在这句话上走不过去。


...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bidepan2023 2007-11-28
  • 打赏
  • 举报
回复
OnAccept会用到CTcpDlg *m_dlg;
所以应该在Listening构造的时候传入指针。
如果不传,编译也不会出错,但运行的时候会发现m_dlg为空或者野指针!!
mr.zhoux 2007-11-27
  • 打赏
  • 举报
回复
将对话框指针传递给socket对象,应该是用于显示值的吧...
sxcong 2007-11-27
  • 打赏
  • 举报
回复
那你仔细看
Listening();
Listening(CTcpDlg *pdlg);
这两个是怎么实现的
beyound 2007-11-26
  • 打赏
  • 举报
回复
我想问的是m_pSocket=new Client(this)是不是应该m_pSocket=new Listening();呢?m_pSocket到底是什么类的对象呢?难道Client是由Listening派生的?
如果你确定m_pSocket应该是Client的对象就去看Client类的构造函数定义吧。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧