c+中的枚举类型帮助+; < >我在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 }

c+中的枚举类型帮助+; < >我在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 },c++,enums,user-defined-functions,C++,Enums,User Defined Functions,我知道枚举中的每个值都从0开始编制索引,但我不确定如何执行此操作。任何帮助都将不胜感激。您可以将其转换为整数,执行算术运算,然后将其转换回去 ChineseZodiacSign nextSign(ChineseZodiacSign cz) { int val = static_cast<int>(cz); val++; val = val % 12; return static_cast<ChineseZodiacSign>(val); }

我知道枚举中的每个值都从0开始编制索引,但我不确定如何执行此操作。任何帮助都将不胜感激。

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

ChineseZodiacSign nextSign(ChineseZodiacSign cz)
{
    int val = static_cast<int>(cz);
    val++;
    val = val % 12;
    return static_cast<ChineseZodiacSign>(val);
}
中国生肖下一个符号(中国生肖cz)
{
int val=静态铸件(cz);
val++;
val=val%12;
返回静态_-cast(val);
}

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

枚举类型不能转换为int类型。您的代码行如下:

ChineseZodiacSign nextSign(ChineseZodiacSign cz)
{ if (cz%12==1)
  cz=cz+1
}
假设枚举类型为int,并且在程序传递给编译器后将崩溃

Dark正确地指出枚举类型需要转换为int类型,然后作为枚举类型传回


如果我在发布此消息时做了任何不正确的事情,我很抱歉-这是我第一次。

我还会使用if语句吗?如果是的话,我该如何插入它?我不确定你的If语句是为了什么——它现在说的是“如果符号是牛,给它加一个”,这毫无意义。如果只是想返回下一个符号,则不需要if语句。模数(
%
)操作确保数字保持在0-11范围内。因此,即使它到达终点,它也会重新开始?国防部将处理该问题。您不需要if语句。