que estoy haciendo algo como estostatic const + const como una matriz ligada
Class.hpp:
class Class {
private:
static const unsigned int arraySize;
int ar[arraySize+2];
};
Class.cpp:
#include <Class.hpp>
const unsigned int arraySize = 384;
El compilador (q ++, una compilador de C++ para el sistema operativo QNX basado en g ++) me da error: array bound is not an integer constant
al compilar una unidad que incluye Class.hpp
(no al compilar Class.cpp).
¿Por qué no funciona? Sé que un miembro de estást estático se puede usar como un conjunto de matrices, garantizado por el estándar de C++ (ver this anwser). ¿Pero por qué el compilador no ve el resultado de static const + const
como una constante?
Compila bien para mí (gcc 4.6.1), como debería. ¿Probablemente un error en ese compilador? –
He actualizado mi ejemplo para que coincida mejor con mi código real. Tal vez hay un problema con la declaración forward de arraySize? – MBober
Consulte aquí: [DR # 721] (http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#721). Siempre se pretendía (y en C++ 11 es explícitamente el caso) que el inicializador para la constante debería ser visible en el punto en el que el miembro de datos estáticos o la variable constante se usó para calificar como una expresión constante. –