目前正在学校做一个项目,我的任务是将一个C算法转换成C++(我在10小时之前开始学习C++,当我拿到这个任务时)。
在编写一个函数时,我遇到了错误:
[错误] invalid conversion from 'long int' to 'long int*' [-fpermissive]
这里我创建了一个全局变量,它在testInstance函数中使用。
static long *c; // total capacity
这是出错的函数。
void testInstance (Exitem **f, Exitem **l, int n, int r, int type, int v){
Exitem *a;
*f = a;
*l = &a[n-1];
c = maketest(*f, *l, type, r, v);
}
这是函数maketest(在导致错误的那行调用)。
long maketest (Exitem *F, Exitem *L, int type, int r, int v){
register Exitem *J;
register long sum;
long c;
short r1;
sum = 0;
r1 = r / 10;
for (J = F; J <= L; J++){
J->w = (longRand() % (r));
switch (type){
case 1:
J->p = (longRand() % (r)) + 1;
break;
case 2:
J->p = (longRand() % (2*r1+1)) + J->w - r1;
if (J->p <= 0)
J->p = 1;
break;
case 3:
J->p = J->w + 10;
break;
case 4:
J->p = J->w;
break;
}
sum += J->w;
}
c = sum / 2;
return c;
}
我的问题是:我到底做错了什么?我该怎么解决?
register
关键字现在已经不起作用了。如果编译器可以做得更好,它会完全忽略register
。更多信息请参见:https://dev59.com/7nA75IYBdhLWcg3wm6Qj - user4581301