我在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开始编制索引,但我不确定如何解决这个问题。任何帮助将不胜感激。
答案 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类型然后作为枚举类型传回。
对不起,如果我在发帖时做错了什么 - 这是我的第一次。