1. ホーム
  2. c++

[解決済み】'int [0]'のイニシャライザが多すぎる c++

2022-02-23 23:58:09

質問

最初に

int k[] ={1,2,3,4,5};

2番目

struct slk
{
    int k[] ={1,2,3,4,5};
};

これらの 2 つのステートメントについて、最初のステートメントはコンパイルに合格したのに、2 番目のステートメントではなぜ

error:too many initializers for 'int [0]'. k[5]を設定するとコンパイルが通ります。

このエラーメッセージは何を意味するのでしょうか?注:コードはGNU GCCバージョン4.7.2でテストされました。

解決方法は?

C++11では、クラス内メンバ初期化子が認められていますが、基本的にはメンバ初期化リストで初期化するのと同じ動作になります。そのため、配列のサイズを明示的に指定する必要があります。

Stroustrupのウェブサイトに簡単な説明があります。 こちら .

エラーメッセージは、長さ0の配列に対してアイテムが多すぎることを意味します。 int [] はこのコンテキストで評価されます。