C++ 使用 int 从列表中设置枚举

标签 c++ enums switch-statement

我在游戏中使用角色类的头文件(将其作为体验的辅助项目)。我有它的工作,但感觉就像我在做这件事很长的路要走。我要求一个“int”来设置字符类,然后使用 switch 语句根据枚举位置设置它。是否有更清晰、更短的方法来执行此操作?我在这里做了什么会被认为是不好的做法吗?

class Character_Class {
  public:
    enum classofnpc { CLERIC, FIGHTER, ROGUE, WIZARD, BARBARIAN, DRUID, PALADIN, SORCERER, BARD, MONK, RANGER, WARLOCK };

    Character_Class(const int& a, const int& b){
        switch (a) {
            case 0 :
                a_class = CLERIC;
                break;
            case 1 :
                a_class = FIGHTER;
                break;
            case 2 :
                a_class = ROGUE;
                break;
            case 3 :
                a_class = WIZARD;
                break;
            case 4 :
                a_class = BARBARIAN;
                break;
            case 5 :
                a_class = DRUID;
                break;
            case 6 :
                a_class = PALADIN;
                break;
            case 7 :
                a_class = SORCERER;
                break;
            case 8 :
                a_class = BARD;
                break;
            case 9 :
                a_class = MONK;
                break;
            case 10 :
                a_class = RANGER;
                break;
            case 11 :
                a_class = WARLOCK;
                break;
        }
        lvl = b;
    }
  private:
    classofnpc a_class;
    int lvl;
};

最佳答案

你的构造函数可以是

Character_Class(const classofnpc& a, const int& b)
: a_class { a }, lvl { b }
{ }

由于 enum 是公开的,因此您不需要 switch 语句。您可以像这样实例化此类的实例

Character_Class foo{ Character_Class::ROGUE, 12 };

关于C++ 使用 int 从列表中设置枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30084131/

相关文章:

enums - 尝试使用 Enum.reduce

c# - 关于 Enum 和 DataAnnotation

c++ - SLURM C++ 发现可用内核多于分配的内核

来自特定数组的 C++ 随机数生成器

c++ - 模板参数作为其他模板的参数

Java 枚举作为 BigInteger 值

java - 为什么我不能在 Java 的 switch 语句中使用 'continue'?

c - 开关盒(C 型)

java - 如何为字符串执行 switch cases?

java - 如何在现代 Linux 中轻松制作图形?