|
![]() | 作者: 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号