c ++中的枚举类型帮助

时间:2014-04-09 03:18:00

标签: c++ enums user-defined-functions

我在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开始编制索引,但我不确定如何解决这个问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

ChineseZodiacSign nextSign(ChineseZodiacSign cz)
{
    int val = static_cast<int>(cz);
    val++;
    val = val % 12;
    return static_cast<ChineseZodiacSign>(val);
}
当然,你可以在一个陈述中写下所有内容,但为了便于阅读,我把它分开了。

答案 1 :(得分:0)

枚举类型无法转换为int类型。你的代码行在这里:

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

假设枚举类型是一个int,并且一旦程序传递给编译器就会崩溃。

Dark说明枚举类型需要转换为int类型然后作为枚举类型传回。

对不起,如果我在发帖时做错了什么 - 这是我的第一次。