我有一些静态常量成员的声明如下:
.h
.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
在某个时候,我想要像这样在 switch 语句中使用这些值:
unsigned char value;
...
switch(value) {
case MyClass::sInvalid : /*Do some ;*/ break;
case MyClass::sOutside : /*Do some ;*/ break;
...
}
但我收到以下编译器错误:错误:'MyClass :: sInvalid'不能出现在常量表达式中。
我阅读了其他关于 switch-cannot-appear-constant-stuff 的内容,但没有找到适合我的答案,因为我不知道为什么那些 static const unsigned char
不是常量表达式。
我正在使用gcc 4.5。