8

次のような連続した列挙型を反復処理する方法はたくさんあります

enum Animal {Cat, Dog, Dolphin}

しかし、次のような連続しない列挙型要素を反復する便利で簡単な方法はありますか

enum Animal {Cat = 0, Dog = 5, Dolphin = 8}
4

3 に答える 3

1

列挙に必要な演算子を提供することもできます。

enum Animal
{
  Cat = 0
  , Dog = 5
  , Dolphin = 8
};

inline Animal& operator++ (Animal &x)
{
  switch (x) {
    case Cat:
      x = Dog;
      break;
    case Dog:
      x = Dolphin;
      break;
    case Dolphin:
    default:
      x = static_cast<Animal>(static_cast<int>(x) + 1);
      break;
  }
  return x;
}

postfix の DTTO ++<およびその他必要なもの。もちろん、それらを列挙の定義と同期させる必要があります。それほど簡単ではありませんが、オプションです。

于 2013-07-22T11:38:42.083 に答える