![](/img/trans.png)
[英]invalid conversion from 'long int' to 'void (*)()' [-fpermissive]
[英]invalid conversion from 'long int' to 'long int*' -fpermissive
目前正在做一個學校項目,我得到的任務是將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;
}
我的問題是:我到底在做什么錯? 我該如何解決?
maketest()的返回值很長。 您將long寫入c,它是long類型的指針。
那是不匹配的。
您已聲明:
static long *c;
但是您的函數可以:
long maketest (Exitem *F, Exitem *L, int type, int r, int v)
{
...
return c;
}
由於返回類型為long
,而c
是指向 long
的指針 ,因此會導致不匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.