使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 10 6 30 2 2 注意:错误的语句在//******error******的下面,修改该语句即可。 #include<iostre

admin2016-10-28  16

问题 使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
10
6
30
2
2
注意:错误的语句在//******error******的下面,修改该语句即可。
#include<iostream.h>
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******
typedef int(FUNC)(int);
//******error******
FUNC func[];
public:
CMyClass()
(
func[0]=CMyClass::Add;
func[1]=CMyClass::Sub;
func[2]=CMyClass::Mul;
func[3]=CMyClass::Div;
number:0;
}
int CaliFunction(int i,int j)
{
//******error******
return(func)(j);
}
};
void 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;
}

选项

答案(1)typedef int(CMyClass::*FUNC)(int); (2)FUNC func[4]; (3)return(this->*func[i])(j);

解析 (1)在类中定义函数指针须指定类名及指针定义运算符*,因此第1个标识下函数指针正确的定义为“typedef int (CMyClass::*FUNC)(int);”。
(2)函数指针数组本身是数组类型,因此在定义时如果没有初始化,就必须指定数组大小,在本题中因为指针数组包含的指针变量需要指向四种算数运算,因此定义指针数组大小为4,即第2个标识下应改为“FUNC func[4];”。
(3)func是指针数组,因此访问的时候需要有指针运算符“*”,第3个标识下应改成“return(this->func)(j);”。
转载请注明原文地址:https://kaotiyun.com/show/YKNp777K
0

最新回复(0)