1

私はこれをしたいと思います:

Class Obj{
private:
int a;
int b[a][3];

public:
Obj(int a);
}

オブジェクトを作成するときに配列のサイズを指定できるようにしますが、次のコンパイル エラーが発生します: エラー: バインドされた配列は整数定数ではありません

ベクトルを使いたくないのですが、これを行う方法を知っている人はいますか? ありがとう。

4

3 に答える 3

1

配列サイズは である必要がありますconstant。動的割り当てを使用しない方法は 1 つだけです。このクラスのすべての配列に事前定義された定数を使用します。

class Obj{
private:
static constexr int a = 5;
int b[a][3];

public:
Obj();
};

異なるサイズが必要な場合は、ベクトルを使用しないのであれば、メモリを動的に割り当てる必要があります。

于 2013-04-04T09:50:15.833 に答える
0

拡張に依存したい場合は、ISO C99 では拡張によって可変長配列を使用できます。http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html を参照してください。この拡張では、配列は任意のように宣言されます。他の自動配列ですが、長さが定数式ではありません。

副作用は、コードがこの拡張機能を取得したコンパイルでコンパイルされることです。

于 2013-04-04T10:05:48.380 に答える
0

動的割り当てを使用する必要があります。

b = new int *[a] ;
//memory allocated for  elements of each column.
for( int i = 0 ; i < a ; i++ )
   b[i] = new int[3];
于 2013-04-04T09:52:27.203 に答える