2017-06-25 17 views
1

現在、学校向けのプロジェクトを行っており、CアルゴリズムをC++に変えることが課題でした(約10時間前にC++を学び始めました。割り当てを得た)。'long int'から 'long int *'に変換できませんでした。-fpermissive

私はエラーを得た機能行う:私はtestInstance機能

に使われているグローバル変数を作成[-fpermissive】ここで

を [エラー]「long int型*」から「long int型」から無効な変換を

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; 

    } 

私の質問は間違っていますか?どうすれば修正できますか?

+2

興味深い事実: 'register'は本当にそれほど多くはありません。コンパイラがうまくいく場合、 'register'は完全に無視されます。 More here:https://stackoverflow.com/questions/3207018/register-keyword-in-c – user4581301

+0

聖なる指針、バットマン! –

答えて

2

maketest()の戻り値が長いです。その長さをcに書きます。これはlongへのポインタ型です。

これは不一致です。

+0

これはうまくいきますが、他にも多くのエラーがありますが、別の質問をする前に自分で修正しようとします。 –

1

あなたは宣言している:

static long *c; 
をが、あなたの関数がありません:戻り値の型が longあるので、 clongから ポインタありながら

long maketest (Exitem *F, Exitem *L, int type, int r, int v) 
{ 
    ... 
    return c; 
} 

、不一致の原因となります。

+0

あなたは別の間違いを発見したが、 'long int *'と 'long int'の両方に警告されるだろうか?私。逆に。 – Yunnosch

+0

@Yunnosch私はあなたの答えを見る、同じことを言っているのではないか? +1 – gsamaras

+0

私たちは両方とも問題を発見しました。そして、OPは今も認識しており、感謝しています。間違った言い訳をするのは間違いありませんが、あなたが見つけた問題は、タイトルに記載されている正確な警告OPを引き起こす問題ではないと思います。私はあなたが次の警告、または前の警告であると期待しています。 'long-> long *'は 'long * - > long'ではありません。 +1 – Yunnosch

関連する問題