Re: [問題] 求助 class 內的function pointer用法

看板C_and_CPP (C/C++)作者 (大豬小豬肉一斤)時間16年前 (2009/09/03 00:24), 編輯推噓2(200)
留言2則, 1人參與, 最新討論串3/6 (看更多)
很感謝QQ29為我解答,不過有些細節我還是沒有搞懂,希望大家指點指點。 : #include <iostream> : using namespace std; : class A; : typedef void(A::*PTR)(int,int); 其實這一行我就沒有看很懂,後來爬了文發現QQ大先前也有一樣的問題, typedef int b 的用法 一直以為 可以用 b 來宣告int型態的變數,僅此而已。 後來才知道有 typedef void (*A)(int,int); 的用法, 亦即 以A 來做為 宣告 void(*)(int,int) 型態(function pointer)的變數, 這樣理解應該沒錯吧? 至於先宣告class A 也很好理解,因為A在此時尚未定義, 需要qualify PTR 為其member function。 但是A::* 我就不懂了,A::*PTR的意思是什麼呢? 為什麼我加上A::(*PTR) compiler 不會過? : class A : { : public: : A(){} : void QQ(int a,int b){cout<<a<<b;} : void XD( PTR P){ (this->*P)(5,6);} ↑ 我也不知道為什麼要加上* : : void DO() : { : XD(&A::QQ); ↑這裡我也有問題,QQ已經是class A的成員函數 為何需要qualify呢? 那qualify後為何又要取址呢? 為什麼寫成 XD( &(A::QQ) ) Compiler也不會過? : } : }; : int main() : { : A T; : T.DO(); : return 0; : } : 這樣是可以run的 是不是你想要的?? : 有錯請各位多指教 : ps.有誰知道我寫this->這個 為啥不寫會錯= = 我想不透 很抱歉,我真的很新, 希望能為小弟解惑,感謝大家! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.144.17 ※ 編輯: kkroy 來自: 140.113.144.17 (09/03 00:26)

09/03 00:39, , 1F
不會新阿 這個我也不常用 你仔細看那網頁都有寫 為啥要this
09/03 00:39, 1F

09/03 02:55, , 2F
你下面問的我也很想知道 希望有人回答
09/03 02:55, 2F
文章代碼(AID): #1AdfnNYX (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1AdfnNYX (C_and_CPP)