首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

指向成员函数的指针初始化的有关问题

2013-03-25 
指向成员函数的指针初始化的问题 #includeiostreamusing namespace stdclass CMyClass{private:int num

指向成员函数的指针初始化的问题
 #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;



仅供参考

热点排行