【发布时间】:2012-05-16 13:01:02
【问题描述】:
我有一些静态常量成员的以下声明
.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-cannot-appear-constant-stuff 并没有为我找到答案,因为我不明白为什么那些 static const unsigned char 不是常量表达式。
我使用的是 gcc 4.5。
【问题讨论】:
标签: c++ gcc constants switch-statement