簡體   English   中英

從'long int'到'long int *'的無效轉換-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM