论坛: 编程破解 标题: 初学C++的问题 复制本贴地址    
作者: lxlmf [boadi]    论坛用户   登录
void *CComm::ListenThread( void *data )
{
CComm *Comm = (CComm *)data;
int len = sizeof(Comm->client);
...
}

CComm *Comm = (CComm *)data;这到底是什么意思
是不是定义个ccomm类的comm指针,然后赋个初始值什么等号后面什么强制转型的
这到底是什么冬冬啊
如果类也是个结构
这到底定义了什么或赋了 什么
谁能帮我解开这个迷啊

虽然有人回答了但是我还是不懂,你们可不可以通俗的啊


[此贴被 lxlmf(boadi) 在 10月15日21时54分 编辑过]

地主 发表时间: 05-10-15 21:53

回复: windflower [windflower]   论坛用户   登录
void *CComm::ListenThread( void *data )
{
CComm *Comm = (CComm *)data;
int len = sizeof(Comm->client);
...
}
CComm是一个类(虽然此处不见定义,但己隐含如此意思),ListenThread是它的一个成员函数
CComm *Comm=(CComm*)data
左边是定义一个CComm类的指针,右边是把data强制转换成CComm指针类型,然后再赋给Comm
然后len是求得Comm的成员client的长度(或大小)

B1层 发表时间: 05-10-16 00:00

回复: lxlmf [boadi]   论坛用户   登录
"然后再赋给Comm" 是赋了什么,是内容还是地址


B2层 发表时间: 05-10-16 12:48

回复: moyer [moyer]   论坛用户   登录
应该是地址*Comm = (CComm *)data,如果是内容的话,应该*Comm = *(CComm *)data,你可以先在电脑上试试啊,编程里总会有一些这样的东西,要试一下才知道,++i*i++,和i++*++i,就很让人头痛呢?
  

B3层 发表时间: 06-02-24 08:48

回复: flynet [flynet]   论坛用户   登录
大概说一下
void *CComm::ListenThread( void *data )/这里data是个未知类型的指针
{
CComm *Comm = (CComm *)data;//所以必须转换成CComm类型的指针才能用,其实东西没有变。就是这个意思
int len = sizeof(Comm->client);
...
}

学语言。不要太求甚解,知道怎么用就行了。除非你是很高的那种
不要把时间浪费在太细节的问题上面,纠缠不休没有好处。
更多的时间,应该花在coding上。就算拷贝人家的程序也好。
这是任何一个程序员起步必须做的工作。那些不太清楚的东西。到以后自然会明白

B4层 发表时间: 06-02-25 09:06

回复: SysHu0teR [syshunter]   版主   登录
CComm *Comm = (CComm *)data;
Comm得到的是data的地址,如果想得到data值的COPY,也不能简单的用*运算,
先用new分配一个CComm的内存空间.如果data有完善的拷贝构造函数,可用*Comm=*(CComm *)data;

C++学的不怎么样,不敢多言~`

B5层 发表时间: 06-02-25 21:14

回复: flynet [flynet]   论坛用户   登录
我认为楼上说的有理,这一点应该注意。
不过此处似乎只需要转换一个指针,就可以直接转一下。
如果是平时使用类的COPY的话,就要象楼上一样细心处理。

B6层 发表时间: 06-02-26 23:10

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号