[問題] struct指標轉為void指標後的使用

看板C_and_CPP (C/C++)作者 (Forza Milan)時間13年前 (2012/08/13 15:18), 編輯推噓3(3012)
留言15則, 8人參與, 最新討論串1/1
一個函式, 其中傳入的參數為一個void指標 而呼叫時傳入的有可能是struct A, struct B兩種不同的struct 請問一下在函式裡要怎麼去判斷是哪種struct而去做相應的動作呢? 謝謝!! 大概像這樣: int foo( void *ptr ) { //怎麼判斷 QQ? //case A: //case B: } int main() { struct type_a A; struct type_b B; foo( &A ); foo( &B ); return 0; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.251.161.7

08/13 15:49, , 1F
C++11 有 decltype, 不然應該是沒辦法
08/13 15:49, 1F

08/13 15:50, , 2F
比較常見的方法是 template 搭配多型吧, C 就沒招了
08/13 15:50, 2F

08/13 15:53, , 3F
對了....是C 囧
08/13 15:53, 3F

08/13 15:58, , 4F
謝謝1F 有其他人有方法嗎
08/13 15:58, 4F

08/13 15:59, , 5F
新增struct的第一個元素 用來給不同struct可供區別的id
08/13 15:59, 5F

08/13 16:00, , 6F
我比較好奇的是為何兩種不同的 struct 會可能傳入同一函式?
08/13 16:00, 6F

08/13 16:00, , 7F
這方法只能說是大部分情形堪用 但並不完美
08/13 16:00, 7F

08/13 16:01, , 8F
因為需要將一部分程式運作正常的責任放在函式呼叫者
08/13 16:01, 8F

08/13 16:08, , 9F
謝謝rodion 試了一下應該能解決我的問題
08/13 16:08, 9F

08/13 16:09, , 10F
你需要的是兩種function....
08/13 16:09, 10F

08/13 16:09, , 11F
根本不該自己去處理型別....
08/13 16:09, 11F

08/13 16:33, , 12F
08/13 16:33, 12F

08/13 18:28, , 13F
如果是想要針對不同 struct 的同名欄位處理
08/13 18:28, 13F

08/13 18:39, , 14F
#define + offsetof()
08/13 18:39, 14F

08/16 03:11, , 15F
用函式指標當super class 學gtk/ffmpeg的方式
08/16 03:11, 15F
文章代碼(AID): #1GAAfVWL (C_and_CPP)
文章代碼(AID): #1GAAfVWL (C_and_CPP)