Por que membros estáticos constantes não podem aparecer em uma expressão constante como 'switch'
Eu tenho a seguinte declaração de alguns membros const estáticos
.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
Em algum momento eu quero usar esses valores em um switch como:
unsigned char value;
...
switch(value) {
case MyClass::sInvalid : /*Do some ;*/ break;
case MyClass::sOutside : /*Do some ;*/ break;
...
}
Mas recebo o seguinte erro do compilador:erro: 'MyClass :: sInvalid' não pode aparecer em uma expressão constante.
Eu li outras coisas que não podem aparecer constantemente e não encontrei uma resposta para mim, já que não entendo por questatic const unsigned char
não são expressão constante.
Eu estou usando o gcc 4.5.