У меня есть следующее объявление некоторых статических константных элементов
.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
В какой-то момент я хочу использовать это значение в коммутаторе, например:
unsigned char value;
...
switch(value) {
case MyClass::sInvalid : /*Do some ;*/ break;
case MyClass::sOutside : /*Do some ;*/ break;
...
}
Но я получаю следующую ошибку компилятора: ошибка: "MyClass:: sInvalid" не может появляться в константном выражении.
Я прочитал другой файл switch-can not-seem-constant-stuff и не нашел ответа для меня, так как не понимаю, почему те static const unsigned char
не являются постоянным выражением.
Я использую gcc 4.5.