lenguaje headers ejemplos cabeceras cabecera archivos c++ arrays initialization header-files

c++ - headers - Inicializando la matriz estática constante en el archivo de encabezado



ejemplos de archivos de cabecera en lenguaje c++ (4)

Acabo de descubrir que lo siguiente no es válido.

//Header File class test { const static char array[] = { ''1'', ''2'', ''3'' }; };

¿Dónde está el mejor lugar para inicializar esto?


Ahora, en C ++ 17, puedes usar la variable en línea

¿Cómo funcionan las variables en línea?

Un simple miembro de datos estáticos ( N4424 ):

struct WithStaticDataMember { // This is a definition, no out­of­line definition is required. static inline constexpr const char *kFoo = "foo bar"; };

En tu ejemplo:

//Header File class test { inline constexpr static char array[] = { ''1'', ''2'', ''3'' }; };

debería funcionar


El mejor lugar sería en un archivo fuente.

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

Puede inicializar los tipos de enteros en la declaración de clase como intentó hacerlo; Todos los demás tipos deben inicializarse fuera de la declaración de clase, y solo una vez.


Siempre puedes hacer lo siguiente:

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

Un par de cosas bonitas sobre este paradigma:


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