最近在寫關於控制項的東西,所以用到一些事件響應方面的處理。以前的用法都是函式指標的形式 , 如下:
typedef void (*funcbtclick)(void *pvalue);
把pvalue 當做當前類的指標傳遞歸乙個類外面的函式,而在類外面寫函式,對於封裝來講就感覺很唐突,也很難管理。
簡單研究了一些文章,用到了乙個很有效的方法類成員函式指標 ,
定義形式為:
typedef void (cwnd::*funcbtclick)();
採用類名::然後跟函式的指標的形式,然後在另乙個類裡面直接 類物件指標->*func指標的形式進行呼叫。
下面講乙個實際應用中的例子:
typedef void (cwnd::*funcbtclick)();//
class cbutton //button類的定義
void setonclick(funcbtclick func)
void onclick()
/*省略其他處理函式*/
private:
cwnd *m_pclass;
funcbtclick m_funbtclick; }
class cmenuwnd:public cwnd
void onclick()
private:
cbutton *m_pbt; }
這樣既可把處理函式寫在類裡面,更好的管理了!
類成員函式指標
類成員函式指標 類的成員函式分為兩種,一種是靜態函式,另外一種是非靜態函式。例如 class x display 為靜態函式,getvalue即為非靜態函式。兩種函式在使用的時候是不一樣的。靜態函式可以直接由類名來呼叫,而非靜態函式則必須通過某乙個物件來呼叫,例如 x display x x x.g...
類成員函式指標
類成員函式指標的基本用法 1。宣告 已知簡單的類宣告如下 class screen screen public screen forword int num 1 我們可以這樣宣告乙個指向back成員函式的指標 screen screen back fun int para screen back 其...
類成員函式指標
include using namespace std class human 抽象類human class mother public human 派生類mother從抽象類human繼承 覆蓋純虛函式run void eat 覆蓋純虛函式eat class father public human...