Warum statische const-Member in einem konstanten Ausdruck wie 'switch' nicht vorkommen können
Ich habe die folgende Deklaration einiger statischer const-Mitglieder
.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
Irgendwann möchte ich diesen Wert in einem Schalter verwenden wie:
unsigned char value;
...
switch(value) {
case MyClass::sInvalid : /*Do some ;*/ break;
case MyClass::sOutside : /*Do some ;*/ break;
...
}
Aber ich bekomme folgenden Compiler-Fehler:Fehler: 'MyClass :: sInvalid' kann nicht in einem Konstantenausdruck erscheinen.
Ich habe andere Sachen gelesen, bei denen Switches nicht als konstant erscheinen können, und habe keine Antwort für mich gefunden, da ich nicht verstehe, warum diesestatic const unsigned char
sind keine konstanten Ausdrücke.
Ich benutze gcc 4.5.