Por qué los miembros const de static no pueden aparecer en una expresión constante como 'switch'
Tengo la siguiente declaración de algunos miembros const constantes
.h
class MyClass : public MyBase
{
public:
static const unsigned char sInvalid;
static const unsigned char sOutside;
static const unsigned char sInside;
//(41 more ...)
}
.cpp
const unsigned char MyClass::sInvalid = 0;
const unsigned char MyClass::sOutside = 1;
const unsigned char MyClass::sInside = 2;
//and so on
En algún momento quiero usar esos valores en un interruptor como:
unsigned char value;
...
switch(value) {
case MyClass::sInvalid : /*Do some ;*/ break;
case MyClass::sOutside : /*Do some ;*/ break;
...
}
Pero me sale el siguiente error del compilador:error: 'MyClass :: sInvalid' no puede aparecer en una expresión constante.
He leído otras cosas que cambian y no aparecen constantemente y no encontré una respuesta para mí, ya que no entiendo por qué esasstatic const unsigned char
No son expresiones constantes.
Estoy usando gcc 4.5.