#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);
FUNC func[4];
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 (func[i])(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;
}
第一处错误是将行注释下面那行改为
typedef int(CMyClass::*FUNC)(int);
第二处错误是将行注释下面那行改为
return (this->*func[i][j]);
我想问的是这两处为什么要这样改?
我是个刚学C++的新手,麻烦讲的通俗些,详细些,谢谢了~
求助一道数组改错题,并说明为什么这样改
照你程序的意思是定义指向int 名称(int)这种类型函数的指针 但是你这样写是错的 在C++中有两种方式定义指向函数的指针变量 第一:(typedef)类型(*指针变量名)(形式参数表)\/\/typedef 可以没有 对应于你这个例子就应该是 int(*FUNC)(int);第二:typedef 函数类型* 指针变量名\/\/ 同样typedef可以...
程序改错题,为什么第三处要由gets(s)改成gets(s【0】)
二维数组有行和列两部分,所以对应的数组就有行地址和列地址,这里如果写s代表的是数组地址,与get()函数的形参类型并不匹配,get()的形参是char*,也就是字符串的地址,所以这里写s[0]代表的是行地址,
一道C语言改错题?
3个错误:数组是升序排列,i,j作为一个区间逐步缩小来查找,每次区间范围缩小一半,当xa[k]时,即x在a[k]右边范围则将下限i=k+1,当a[k]==x时,直接跳出;找到a[k]后删除,使a[k]后面的数向前移动,a[9]置0;3.输出新的数组,前面也加个输出原始数据对比下。include "stdafx.h"include...
vb改错题技巧,急需
步骤一:把握题意,泛读程序,分析程序组成和各过程的功能;步骤二:从通用过程入手, 逐过程输入并逐过程调试;步骤三:输入并调试事件过程,完成对各通用过程调用和组装。下面,我们结合一道改错题来具体说明每个步骤中的方法和技巧。三、“三步逐过程法”解改错题举例 以江苏省二级VB上机考试中的一道考...
计算机二级C语言考试内容有那些?
二、上机 填空、改错和程序设计题 (1)填空题一般有2到3个空,需要删除对应的空后,在删除的位置填上正确的答案。(30分)(2)、改错题的错误在\/***found***\/下面,不要改动其它的地方。(2~3个,30分)。(3)、然后就是程序设计题啦,40分,考试时间90分钟,上机考试每题完成后一定记得...
求改错,这二维数组我怎么就赋不上值呢
你的第一个for循环后面多加了一个分号。float av_xs[N],av_xk[3];for(i=0;i<N;i++)“”“ ; ”“”
一道VB题 希望各位大侠帮忙
改错结果为:Private Sub command1_Click()Dim a, i%, min%, imin%, sum%, t a = Array(26, 43, 61, 87, 33, 19, 37, 59, 76, 69)min = a(0): imin = 0: sum = a(0)For i = 1 To UBound(a)sum = sum + a(i)If a(i) < min Then min = a(i): imin = i...
求改错\/\/将二维数组的行和列互换
程序逻辑上没看出错误来,是不是语法上有错误,没仔细看,呵呵 要是有错误,我估计是你输入的时候没有注意的原因,你打印出a数组看看,是否正确读入了 一般来说,一次性输入,数据用空格隔开就可以,这个是for和c中数据缓冲区的特性,呵呵
一道C语言题目,改错题,快点啊 ,急
改动了些,没问题了,你自己看吧 include<stdio.h> define N 20 float fun(float s[N], int n){ int k;float ave,t,sum=0.0;for(k=0; k<n; k++){ t=s[k]-80;sum+=s[k];} ave=sum\/n;return(ave);} void main(){ float s[N];float ave, a;int n[10]={0,0,0,...
C语言问题,程序改错.
for(i=0;i<=3;i++) \/*数组的下标是从0开始的,上面的int定义a[3]包涵了3个变量,而这里的循环却有4次,应该写成i<3*\/ {scanf("%d",&a[i]); sum+=a[i];} printf("sum=%d\\n",sum);} 细节没注意好 以下是我修改后的,在dev-c环境下正常运行 include"stdio.h"int main(){ ...