Aquí está mi código:¿Por qué no puedo tener una variable en la declaración de mayúsculas y minúsculas?
bool Character::keyPress(char c)
{
switch(c)
{
case up_key:
move(0, -1);
break;
case down_key:
move(0, 1);
break;
case left_key:
move(-1, 0);
break;
case right_key:
move(1,0);
break;
default:
return false;
}
return true;
}
y el compilador se queja:
error C2051: case expression not constant
error C2051: case expression not constant
error C2051: case expression not constant
error C2051: case expression not constant
En mi archivo de cabecera que tengo:
protected:
char up_key;
char down_key;
char right_key;
char left_key;
estoy usando Visual C++ 2008.
Las expresiones de mayúsculas y minúsculas deben ser constantes de tiempo de compilación. cámbielos a 'static const char up_key = 1;' y demás, y resuelva el problema. –
Porque el estándar lo dice.Es un remanente de los viejos tiempos, donde "switch" se introdujo como una presentación "más agradable" que se transformó en una búsqueda de matriz automágicamente (y por lo tanto requiere constantes). Hoy en día tiene menos sentido, pero la sintaxis no se ha modificado, así que ... –