我有一些静态常量成员的以下声明
。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' cannot appear in a constant-expression。
我已经阅读了其他 switch-cannot-appear-constant-stuff 并没有为我找到答案,因为我不明白为什么这些static const unsigned char
不是常量表达式。
我正在使用 gcc 4.5。