私はこれをしたいと思います:
Class Obj{
private:
int a;
int b[a][3];
public:
Obj(int a);
}
オブジェクトを作成するときに配列のサイズを指定できるようにしますが、次のコンパイル エラーが発生します: エラー: バインドされた配列は整数定数ではありません
ベクトルを使いたくないのですが、これを行う方法を知っている人はいますか? ありがとう。
配列サイズは である必要がありますconstant
。動的割り当てを使用しない方法は 1 つだけです。このクラスのすべての配列に事前定義された定数を使用します。
class Obj{
private:
static constexr int a = 5;
int b[a][3];
public:
Obj();
};
異なるサイズが必要な場合は、ベクトルを使用しないのであれば、メモリを動的に割り当てる必要があります。
拡張に依存したい場合は、ISO C99 では拡張によって可変長配列を使用できます。http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html を参照してください。この拡張では、配列は任意のように宣言されます。他の自動配列ですが、長さが定数式ではありません。
副作用は、コードがこの拡張機能を取得したコンパイルでコンパイルされることです。
動的割り当てを使用する必要があります。
b = new int *[a] ;
//memory allocated for elements of each column.
for( int i = 0 ; i < a ; i++ )
b[i] = new int[3];