2012-05-03 6 views
3

私はC++で配列を宣言しようとしていますが、このエラーが発生し続けます。配列を定義するときのC++エラー

エラーC2440: '初期化するには、': 'int型[]' この行の

int b[] = new int[elements]; 

完全なコード

に '* int型から変換することはできません
int* reverseArray (int a[] ,int elements) 
{ 
    int *pointer; 
    int x= elements-1; 
    int b[] = new int[elements]; 
    pointer=b[]; 
    for (int i= 0; i < elements; i++) 
    { 
     b[i] = a[x--]; 
    } 
    return pointer; 
} 
+4

を使用して多くの方が簡単。代わりに 'std :: vector ' – AJG85

答えて

9

あなたは

int* b = new int[elements]; 

int b[] = new int[elements]; 

を変更する必要がありますし、あなただけのpointerを削除し、単にbを返し、そう

int* reverseArray (int a[] ,int elements) 
{ 
    int x = elements-1; 
    int* b = new int[elements]; 
    for (int i = 0; i < elements; ++i) 
    b[i] = a[x--]; 
    return b; 
} 

しかし、あなたが本当にstd::vectorを使用することを検討すべきである必要がありますので、ポインタを返すnewstd::vectorを使用して配列を逆にする場合は、std::reverse<algorithm>から簡単に使用できます。

+0

をポインタ= bに使うことを検討してください。スローは 'int * []'から 'int *'に変換できません –

+0

ベクトルを使用することはできません...クラス割り当て –

+0

@atbyrd将来のためにそれらを念頭に置いてください。私は私の答えに少し追加しました。 –

0

使用vectors - あなたが値の割り当てとスワッピングを修正しても、メモリリークを求めている

+2

これは初心者が何かを理解するのに役立つわけではありません。概念を理解することは、ライブラリを使用するように言われるよりはるかに便利です(もちろん、ベクトルを使うべきですが、それは手元の問題に接しています)。 –

+0

私はライブラリに逐語的に入れることはできません。その人がライブラリを使ってもっと多くのことを達成できるという人を置くのは嫌です。彼らは質問をしたいと思うなら、私は喧嘩や軽蔑をしていないでしょう。 –

+0

さて、これは初心者のための便利な答えだとは思わない。 –

関連する問題