Initializing Constant Static Array In Header File

The best place would be in a source file

// Header file
class test
{
    const static char array[];
};

// Source file
const char test::array[] = {'1','2','3'};

You can initialize integer types in the class declaration like you tried to do; all other types have to be initialized outside the class declaration, and only once.


You can always do the following:

class test {
  static const char array(int index) {
    static const char a[] = {'1','2','3'};
    return a[index];
  } 
};

A couple nice things about this paradigm:

  • No need for a cpp file
  • You can do range checking if you want to
  • You avoid having to worry about the static initialization fiasco

//Header File 
class test 
{ 
    const static char array[];
}; 

// .cpp
const char test::array[] = { '1', '2', '3' };