[問題] 指標很難懂,請問這個指標function是什麼?

看板C_and_CPP (C/C++)作者 (2266)時間16年前 (2009/03/29 21:33), 編輯推噓2(2015)
留言17則, 5人參與, 最新討論串1/1
之前有問過 function pointer 如此種型式 bool (*compare)( int, int ) 今天又看到另一種型式: CButton* radio1 = ( CButton* )GetDlgItem( IDC_RADI01 ); ^^^^^^^^^^^^ 箭頭那個地方代表什麼-.-,看起來有點像function pointer,可是應該不是 請問這個用法叫做什麼,整段的意思又是什麼~.~ 指標真的會搞死人-.- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.62.203.138

03/29 21:34, , 1F
它只是做一個轉型的動作而已
03/29 21:34, 1F

03/29 21:35, , 2F
類似 double a = (double)b; 這樣吧
03/29 21:35, 2F

03/29 21:47, , 3F
請問 這樣是什麼型轉什麼型??
03/29 21:47, 3F

03/29 21:50, , 4F
你看過 double *a=(double*) GetInt();這樣吧?
03/29 21:50, 4F

03/29 21:51, , 5F
GetDlgItem回傳型態 轉成 CButton*
03/29 21:51, 5F

03/29 21:52, , 6F
補充一下 GetDlgItem 回傳 CWnd *
03/29 21:52, 6F

03/29 21:52, , 7F
而 CWnd 是 CButton 的祖宗之一
03/29 21:52, 7F

03/29 21:55, , 8F
所以 傳回的是 CWnd* 可以把他轉成 CButton* 阿-.-
03/29 21:55, 8F

03/29 21:55, , 9F
小螞蟻都沒教.....
03/29 21:55, 9F

03/29 21:56, , 10F
我相信在繼承的章節有提到 但你不知道這是同一件事
03/29 21:56, 10F

03/29 21:57, , 11F
可能還沒看到吧 小螞蟻超大一本-.-
03/29 21:57, 11F

03/29 22:06, , 12F
cast operator 可以隨便你轉
03/29 22:06, 12F

03/29 22:06, , 13F
不過 GetDlgItem 實際傳回的是一個 CWnd 的包裝 (wrapper)
03/29 22:06, 13F

03/29 22:07, , 14F
作 downcast 滿危險的, 比較保險的是用 Attach
03/29 22:07, 14F

03/29 22:08, , 15F
CButton radio1; radio1.Attach(GetDlgItem(IDC_RADIO1));
03/29 22:08, 15F

03/29 22:09, , 16F
處理完再呼叫 CWnd::Detach
03/29 22:09, 16F

03/29 22:11, , 17F
直接 cast 沒問題是因你呼叫的函式都沒用到按鈕的專屬成員
03/29 22:11, 17F
文章代碼(AID): #19ptYVMu (C_and_CPP)
文章代碼(AID): #19ptYVMu (C_and_CPP)