【发布时间】:2017-06-25 21:10:09
【问题描述】:
目前正在为学校做一个项目,我得到的任务是将一个 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;
}
我的问题是:我到底做错了什么?我该如何解决?
【问题讨论】:
-
有趣的有趣事实:
register不再做太多事情了。如果编译器可以做得更好,它将完全忽略register。更多信息:stackoverflow.com/questions/3207018/register-keyword-in-c -
神圣的指针,蝙蝠侠!
标签: c++