指向成员函数的指针初始化的问题
#include<iostream>
using namespace std;
class CMyClass
{
private:
int number;
int Add(int i)
{
return number+=i;
}
int Sub(int i)
{
return number-=i;
}
int Mul(int i)
{
return number*=i;
}
int Div(int i)
{
if (i!=0)
{
return number/=i;
}
else
return number;
}
//*******error******* int(CMyClass::*FUNC)(int);
int (*CMyClass::func[4])(int) ;这里有问题给帮忙改改呗谢了啊
public:
CMyClass()
{
func[0]=this->Add;
func[1]=this->Sub;
func[2]=this->Mul;
func[3]=this->Div;
number=0;
}
int CallFunction(int i,int j)
{
//*******error*******
return (func[i])(j);
}
};
int main()
{
CMyClass myobj;
cout<<myobj.CallFunction(0,10)<<endl;
cout<<myobj.CallFunction(1,4)<<endl;
cout<<myobj.CallFunction(2,5)<<endl;
cout<<myobj.CallFunction(3,15)<<endl;
cout<<myobj.CallFunction(3,0)<<endl;
return 0;
}
[解决办法]
#include<iostream>
using namespace std;
class CMyClass
{
private:
int number;
int Add(int i)
{
return number+=i;
}
int Sub(int i)
{
return number-=i;
}
int Mul(int i)
{
return number*=i;
}
int Div(int i)
{
if (i!=0)
{
return number/=i;
}
else
return number;
}
//*******error******* int(CMyClass::*FUNC)(int);
int (CMyClass::*func[4])(int) ;
public:
CMyClass()
{
func[0]=&CMyClass::Add;
func[1]=&CMyClass::Sub;
func[2]=&CMyClass::Mul;
func[3]=&CMyClass::Div;
number=0;
}
int CallFunction(int i,int j)
{
//*******error*******
return (this->*func[i])(j);
}
};
int main()
{
CMyClass myobj;
cout<<myobj.CallFunction(0,10)<<endl;
cout<<myobj.CallFunction(1,4)<<endl;
cout<<myobj.CallFunction(2,5)<<endl;
cout<<myobj.CallFunction(3,15)<<endl;
cout<<myobj.CallFunction(3,0)<<endl;
return 0;
}
仅供参考