Ho un problema nell'inizializzazione di un array le cui dimensioni sono definite come extern const. Ho sempre seguito la regola che le variabili globali dovrebbero essere dichiarate extern nei file di intestazione e le loro definizioni corrispondenti dovrebbero essere in uno dei file di implementazione al fine di evitare errori di redeclaration variabili. Questo approccio ha funzionato bene fino a quando ho dovuto inizializzare un array con la cui dimensione è definita come extern const. Viene visualizzato un errore indicante un'espressione costante. Tuttavia, se provo ad assegnare un valore alla variabile const, il compilatore si lamenta correttamente che un valore non può essere assegnato a una variabile costante. Ciò dimostra che il compilatore vede la variabile come una costante. Perché allora viene segnalato un errore quando provo a dichiarare un array della stessa dimensione?Dichiarazione di un array la cui dimensione è dichiarata come externale
C'è un modo per evitarlo senza usare #define? Vorrei anche sapere il motivo di questo errore.
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;
}
È possibile inserire il codice con quattro spazi per formattarlo. – Thomas