目前正在为学校做一个项目,我得到的任务是将C算法变成C ++(大约10个小时前,当我完成作业时,我开始学习C ++。)
做一个函数我收到了错误: [错误]无效从'long int'转换为'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;
}
我的问题是:我到底做错了什么?我该如何解决这个问题?
答案 0 :(得分:2)
maketest()的返回值很长。你把它写成c,它是指向long的类型指针。
这就是不匹配。
答案 1 :(得分:1)
您已声明:
static long *c;
但你的功能确实如此:
long maketest (Exitem *F, Exitem *L, int type, int r, int v)
{
...
return c;
}
导致不匹配,因为返回类型为long
,而c
是指针到long
。