我在C ++中具有枚举类型,并且我试图编写一个子程序,该子程序将返回集合中的下一个值。这是我所拥有的:

enum ChineseZodiacSign { Rat, Ox, Tiger, Rabbit, Dragon, Snake, Horse, Sheep, Monkey, Rooster, Dog, Pig };

ChineseZodiacSign nextSign(ChineseZodiacSign cz)
{ if (cz%12==1)
      cz=cz+1
}


我知道枚举中的每个值都是从0开始索引的,但是我不确定该怎么做。任何帮助将不胜感激。

最佳答案

您可以将其转换为整数,执行算术运算,然后将其转换回

ChineseZodiacSign nextSign(ChineseZodiacSign cz)
{
    int val = static_cast<int>(cz);
    val++;
    val = val % 12;
    return static_cast<ChineseZodiacSign>(val);
}


您当然可以将所有内容写在一个语句中,但是为了可读性我将其分开。

09-09 23:19