C++で静的メンバ変数の配列を初期化する

C++で静的メンバ変数として宣言されている配列を初期化する方法のメモ。

例えば、Javaで以下のように表されるクラスがあったとする。

MyConstants.java

public class MyConstants {
    public static final int[] NUMBERS_A = new int[] {
        0,1,2,3,4,5,6,7,8,9
    };
    public static final int[] NUMBERS_B = new int[] {
        9,8,7,6,5,4,3,2,1,0
    };
}

C++で表すと以下のようになる。

MyConstants.h

class MyConstants {
public:
  static const int NUMBERS_A[];
  static const int NUMBERS_B[];
};

MyConstants.cpp

#include "MyConstants.h"

const int MyConstants::NUMBERS_A[] = {
  0,1,2,3,4,5,6,7,8,9
};
const int MyConstants::NUMBERS_B[] = {
  9,8,7,6,5,4,3,2,1,0
};

利用例(main.cpp)

#include <iostream>
#include "MyConstants.cpp"

int main(int argc, const char * argv[]) {
  // insert code here...
  std::cout << "A[0] is " << MyConstants::NUMBERS_A[0] << ". B[0] is " << MyConstants::NUMBERS_A[0] << ".";
  return 0;
}

C++入門について

C++を勉強するなら、以下の書籍が「とても分かりやすい教科書」という感じの丁寧な本でずば抜けて読みやすかったのでおすすめ。

上達を目指すなら以下の書籍もおすすめ。

Pocket
LINEで送る
LinkedIn にシェア