0
我需要一個用於不同函數的開關來規避頻繁的if方向。它應該類似於下面的代碼,封裝在一個類:類內的函數指針
#include<iostream>
#include<stdlib.h>
using namespace std;
template<class T>
class MaxSwitch
{
public:
typedef T (MaxSwitch::*Max_P)(T,T);
Max_P fooC_P;
MaxSwitch(int Q) {
if (Q==0)fooC_P=&MaxSwitch::MaxVal1;
else fooC_P=&MaxSwitch::MaxVal2;
}
inline T MaxVal1(T kx,T MAX)
{
return kx+1;
}
inline T MaxVal2(T kx,T MAX)
{
return MAX;
}
};
int main(int argc, char ** argv)
{
int Q=atoi (argv[1]);
MaxSwitch<int> MAXSW(Q);
int MAX=5;
for (int kx=0;kx<MAX;kx++) for (int ky=0;ky<(MAXSW.fooC_P)(kx,MAX);ky++)
{
cout<<"(kx="<<kx<<", ky="<<ky<<endl;
}
return 0;
}
我現在有很重要的問題,該函數調用(MAXSW.fooC_P)(KY,MAX)是錯誤的。如何正確地做到這一點?
快速說明:對於參數的命名約定使得代碼不是可讀.. –
(周杰倫d正在與「不是可讀」好 - 我會說完全令人困惑。) – Mat
歡迎您編輯它! –