作者kkroy (大猪小猪肉一斤)
看板C_and_CPP
标题[问题] void* 表任意型态的指标...
时间Tue Aug 18 11:57:47 2009
我最近在实作 Link List,遇到一个奇怪的问题,
就是void*不是可以接住任意型态的指标吗?
我写一个function,举例说:
void addEvent(LIST* pList, void* pNewData);
(内容略)
然後在main,我先写好pNewData,像这样:
EventContent* pNewData = (EventContent*)malloc(sizeof(EventContent));
(pNewData->.......内容略)
尔後呼叫 addEvent(pList, pNewData);
Compiler完全没问题,可以过。
不过一样的情形我写一个Traverse 的function:
void traverse(LIST*, int, void**);
(内容略)
呼叫traverse(pList, 0, &pNewData);
Compiler却说 「无法将参数 从 'EventContent **' 转换成 'void **'」
我必须多加上(void**)在&pNewData前才能过,
变像这样: traverse(pList, 0, (void**)&pNewData);
为什麽会这样呢?
又在哪些情况要自己加上(void*)型态转换呢?
谢谢各位先进解答!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.144.18
1F:→ adrianshum:void ptr 可以指往 任何 ptr, 应该不代表 08/18 12:03
2F:→ adrianshum:ptr to (void ptr) 可以指向 ptr to (any ptr) 吧 08/18 12:04
3F:→ adrianshum:其实 method signature 照样用 void * 应该就可以了 08/18 12:05
4F:推 VictorTom:小弟还以为是因为C++对型别检查比较严格....Orz 08/18 12:29