我正在使用带有-std = c++ 11标志的gcc。在我的类(class)定义中,我有以下内容:

private:
   const int   January     = 1,
               February    = 2,
               March       = 3,
               ...

在我的实现中,我有一个switch语句。
switch (currentMonth)
{
   case January:
      returnString = "January";
      break;
   case February:
      returnString = "February";
      break;
   case March:
      returnString = "March";
      break;
   ...

这似乎应该工作,因为几个月是固定的。但是,海湾合作委员会给了我
calendar.cpp:116:12: error: ‘this’ is not a constant expression

在switch语句的每种情况下..为什么会这样呢?

最佳答案

非静态类成员不是常量表达式。试试这个:

static constexpr int January = 1;

10-08 12:41