1. ホーム
  2. c++

C++ のクラスイニシャライザで const 配列を初期化する

2023-09-15 19:34:05

質問

C++で以下のようなクラスがあります。

class a {
    const int b[2];
    // other stuff follows

    // and here's the constructor
    a(void);
}

問題は、コンストラクタの関数本体の中では初期化できないので、初期化リストでどのようにbを初期化するかです。bは const ?

これはうまくいきません。

a::a(void) : 
    b([2,3])
{
     // other initialization stuff
}

編集: このような場合は b に異なる値を指定することができますが、その値はインスタンスの寿命の間、一定であることが知られている場合です。

どのように解決するのですか?

他の人が言ったように、ISO C++はそれをサポートしていません。しかし、あなたはそれを回避することができます。代わりにstd::vectorを使えばいいだけです。

int* a = new int[N];
// fill a

class C {
  const std::vector<int> v;
public:
  C():v(a, a+N) {}
};