看板 C_and_CPP 關於我們 聯絡資訊
我想請教各位一個問題 目前我想將好幾個不同的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
james732:cout << ((Light *)A.LocalLink)->Power; 09/25 21:37
james732:要加個強制轉型 compiler才知道它是什麼 09/25 21:37
godman362:感謝j大,我剛剛也有想到轉型的問題 09/25 21:55
godman362:不過一直加錯地方 09/25 21:55
godman362:感謝您給了正確的括號對應,謝謝 09/25 21:55
godman362:不過想請教一下,這個地方是要用Light轉型還是TuneLight 09/25 21:57
godman362:因為我剛剛試了一下,兩個結果好像一樣? 09/25 21:57
godman362:所指的東西是TuneLight,應該是要用TuneLight轉型 09/25 21:58
godman362:但是為什麼用Light轉型卻也會出現相同結果? 09/25 21:58
james732:呃 應該要用 TuneLight 比較好 是我弄錯了 09/25 22:03
james732:不過它們兩個在記憶體裡的存放方式一模一樣 09/25 22:04
james732:所以結果才會相同 09/25 22:04
godman362:那這樣說來,假設我屬性設的不同的話 09/25 22:05
godman362:這樣記憶體中存放的方式就會不同,也不可能會產生相同結 09/25 22:06
godman362:果了,是這樣嗎 09/25 22:06
james732:你可以試試看把 Light 的 Power 改成 double 09/25 22:06
godman362:我知道了,謝謝您的指導 09/25 22:06