11

-std=c++11 フラグを指定して gcc を使用しています。私のクラス定義には、次のものがあります。

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;
   ...

月が一定であるため、これは機能するはずです。しかし、gccは私に与えます

calendar.cpp:116:12: error: ‘this’ is not a constant expression

switchステートメントの各ケースで..なぜこれが間違っているのですか?

4

2 に答える 2

15

非静的クラス メンバーは定数式ではありません。これを試して:

static constexpr int January = 1;
于 2013-04-30T22:55:56.047 に答える
3

これを試して:

enum {
 January = 1,
 February = 2
 ...
};
于 2013-04-30T22:56:15.190 に答える