[問題] 不同物件的Link-List

看板C_and_CPP (C/C++)作者 (青)時間16年前 (2009/09/25 21:27), 編輯推噓0(0017)
留言17則, 2人參與, 最新討論串1/5 (看更多)
我想請教各位一個問題 目前我想將好幾個不同的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

09/25 21:37, , 1F
cout << ((Light *)A.LocalLink)->Power;
09/25 21:37, 1F

09/25 21:37, , 2F
要加個強制轉型 compiler才知道它是什麼
09/25 21:37, 2F

09/25 21:55, , 3F
感謝j大,我剛剛也有想到轉型的問題
09/25 21:55, 3F

09/25 21:55, , 4F
不過一直加錯地方
09/25 21:55, 4F

09/25 21:55, , 5F
感謝您給了正確的括號對應,謝謝
09/25 21:55, 5F

09/25 21:57, , 6F
不過想請教一下,這個地方是要用Light轉型還是TuneLight
09/25 21:57, 6F

09/25 21:57, , 7F
因為我剛剛試了一下,兩個結果好像一樣?
09/25 21:57, 7F

09/25 21:58, , 8F
所指的東西是TuneLight,應該是要用TuneLight轉型
09/25 21:58, 8F

09/25 21:58, , 9F
但是為什麼用Light轉型卻也會出現相同結果?
09/25 21:58, 9F

09/25 22:03, , 10F
呃 應該要用 TuneLight 比較好 是我弄錯了
09/25 22:03, 10F

09/25 22:04, , 11F
不過它們兩個在記憶體裡的存放方式一模一樣
09/25 22:04, 11F

09/25 22:04, , 12F
所以結果才會相同
09/25 22:04, 12F

09/25 22:05, , 13F
那這樣說來,假設我屬性設的不同的話
09/25 22:05, 13F

09/25 22:06, , 14F
這樣記憶體中存放的方式就會不同,也不可能會產生相同結
09/25 22:06, 14F

09/25 22:06, , 15F
果了,是這樣嗎
09/25 22:06, 15F

09/25 22:06, , 16F
你可以試試看把 Light 的 Power 改成 double
09/25 22:06, 16F

09/25 22:06, , 17F
我知道了,謝謝您的指導
09/25 22:06, 17F
文章代碼(AID): #1AlCLLME (C_and_CPP)
文章代碼(AID): #1AlCLLME (C_and_CPP)