Re: [問題] 求助 class 內的function pointer用法
很感謝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
09/03 00:39, 1F
推
09/03 02:55, , 2F
09/03 02:55, 2F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章