作者godman362 (青)
看板C_and_CPP
标题[问题] 不同物件的Link-List
时间Fri Sep 25 21:27:47 2009
我想请教各位一个问题
目前我想将好几个不同的struct建成一个Link-List
而我的作法,是在struct中建一个void *
以下我举个例子:
struct Light
{
int Power;
void *LocalLink;
};
struct TuneLight
{
int Power
void *LocalLink
};
int main()
{
Light A;
TuneLight B;
A.LocalLink = &B;
cout <<A.LocalLink->Power;
return 0;
}
我目前写了一个这样的范例
到黄色那行都没有问题,这是代表说我实际上可以这样指,没错吧?
那麽到了红色那边开始出现Error,原因是说void *不能用来指物件
这我就有点不明白了,如果不能指,早应该在上一行就产生问题
所以还请各位先进给予一些指点,谢谢。
--
ˍˍ
如果我手中有酒,希望与你共饮。 ▕羽人▏
如果我手上有刀,希望与你一同抗敌。▕非獍▏
 ̄ ̄
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.118.6.168
1F:→ james732:cout << ((Light *)A.LocalLink)->Power; 09/25 21:37
2F:→ james732:要加个强制转型 compiler才知道它是什麽 09/25 21:37
3F:→ godman362:感谢j大,我刚刚也有想到转型的问题 09/25 21:55
4F:→ godman362:不过一直加错地方 09/25 21:55
5F:→ godman362:感谢您给了正确的括号对应,谢谢 09/25 21:55
6F:→ godman362:不过想请教一下,这个地方是要用Light转型还是TuneLight 09/25 21:57
7F:→ godman362:因为我刚刚试了一下,两个结果好像一样? 09/25 21:57
8F:→ godman362:所指的东西是TuneLight,应该是要用TuneLight转型 09/25 21:58
9F:→ godman362:但是为什麽用Light转型却也会出现相同结果? 09/25 21:58
10F:→ james732:呃 应该要用 TuneLight 比较好 是我弄错了 09/25 22:03
11F:→ james732:不过它们两个在记忆体里的存放方式一模一样 09/25 22:04
12F:→ james732:所以结果才会相同 09/25 22:04
13F:→ godman362:那这样说来,假设我属性设的不同的话 09/25 22:05
14F:→ godman362:这样记忆体中存放的方式就会不同,也不可能会产生相同结 09/25 22:06
15F:→ godman362:果了,是这样吗 09/25 22:06
16F:→ james732:你可以试试看把 Light 的 Power 改成 double 09/25 22:06
17F:→ godman362:我知道了,谢谢您的指导 09/25 22:06