Posted on 2010-11-02 16:33
點點滴滴 閱讀(914)
評論(0) 編輯 收藏 引用 所屬分類:
02 編程語言
定義一個類,類中有幾個函數成員完成相似的功能,根據調用者選的模式對相應的函數進行調用 在Funtion()函數下如果按下面的代碼調用的話,由于這個Funtion()頻繁調用(成千上萬次).如果每次都進行判斷性能會降低很多.所以準備用類成員函數代替下面的段代碼.
switch(iFlag)
{
case 1:
Fun1();
break;
case 2:
Fun2();
break;
case 3:
Fun3();
break;
}
在類中定義
typedef void (BaseClass::*FUN)();
然后聲明函數成員
FUN m_fun;
在構造函數中根據相應的模式進行指針賦值
switch(iFlag)
{
case 1:
m_fun=Fun1;
break;
case 2:
m_fun=Fun2;
break;
case 3:
m_fun=Fun3;
break;
}
在調用出直接用類成員函數指針調用.卻報了error C2064: term does not evaluate to a function這個錯誤
Funtion()
{
m_fun();
}
呵呵..其實原因很簡單..成員函數指針和類成員函數指針的區別就是累成員函數會有一個this指針需要 加上這個指針上述代碼改為下面的形式..ok.編譯成功.....
Funtion()
{
(this->*m_fun)();
}