Tengo un problema al inicializar una matriz cuyo tamaño se define como const externo. Siempre he seguido la regla de que las variables globales deben declararse como extern en los archivos de encabezado y sus definiciones correspondientes deben estar en uno de los archivos de implementación para evitar errores de redeclaración de variables. Este enfoque funcionó bien hasta que tuve que inicializar una matriz con cuyo tamaño se define como una const externa. Aparece un error que se espera una expresión constante. Sin embargo, si intento asignar un valor a la variable const, el compilador se queja correctamente de que no se puede asignar un valor a una variable constante. Esto realmente prueba que el compilador ve la variable como una constante. ¿Por qué entonces se informa un error cuando trato de declarar una matriz del mismo tamaño?Declaración de una matriz cuyo tamaño está declarado como const externo
¿Hay alguna forma de evitar esto sin usar #define? También me gustaría saber el motivo de este error.
Package.h:
#ifndef PACKAGE_H
#define PACKAGE_H
extern const int SIZE;
#endif
Package.cpp:
#include "Package.h"
const int SIZE = 10;
foo.cpp:
#include "Package.h"
int main()
{
// SIZE = 5; // error - cannot assign value to a constant variable
// int Array[SIZE]; // error - constant expression expected
return 0;
}
Puede aplicar sangría al código con cuatro espacios para formatearlo. – Thomas