精華區beta C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) xcode 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) box2d 問題(Question): 我收到的資料是 void* 型態 我可以用 static_cast轉成我要的型態 可是 static_cast 不夠安全 如果轉型錯誤了 不會完全NULL 不像 dynamic_cast 我沒辦法判斷 資料的正確與否 請問大家有好方法嗎???? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.35.163.53 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1449604939.A.806.html
dritchie: void* 本來就沒有安全轉型 12/09 08:10
littleshan: 有一些dirty流可以在某種程度內提供解法 12/09 11:47
littleshan: 比如說搭配memory pool,你可以檢查位址是否在pool內 12/09 11:48
littleshan: 來判斷這個物件是不是用pool產生出來的 12/09 11:48
littleshan: 或是在物件的開頭寫入一些特殊標記 12/09 11:49
littleshan: 當然,這些都有其限制,不保證能完全解決問題 12/09 11:50
Killercat: 其實這比較像是reinterpret_cast的場合 XD 12/10 12:09
Killercat: 不過void*算是個特例,compiler不會抱怨 12/10 12:11
Killercat: 你用static_cast去轉 12/10 12:11
andyjy12: 如果自己的struct,那就在第一個byte 加入type info 12/12 17:28
如果是我自己的.... 我一定不會用 void*....... ※ 編輯: yhn0tgb60 (218.35.163.53), 12/13/2015 00:17:00