1. ホーム
  2. c++

[解決済み] エラー "array bound is not an integer constant before ']' token" を取得する。

2022-01-28 14:17:32

質問

配列を使ってスタックを実装しようとしているのですが、エラーが発生します。

class Stack{
private:
    int cap;
    int elements[this->cap]; // <--- Errors here
    int top;
public:
  Stack(){
     this->cap=5;
     this->top=-1;
};

表示されている行には、このようなエラーがあります。

Multiple markers at this line
- invalid use of 'this' at top level
- array bound is not an integer constant before ']' token

何が間違っているのでしょうか?

どうすればいいですか?

C++では、配列のサイズはコンパイル時に既知の定数である必要があります。 そうでない場合は、エラーが発生します。

ここで、あなたは

int elements[this->cap];

注目すべきは this->cap の大きさに依存するため、コンパイル時に既知の定数ではありません。 cap があります。

サイズが後で決まる可変長の配列を持ちたい場合は、以下のようにします。 std::vector これは、実行時にサイズを変更することができます。

お役に立てれば幸いです。