gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:27:21 24 4
gpt4 key购买 nike

我在游戏中使用角色类的头文件(将其作为体验的辅助项目)。我有它的工作,但感觉就像我在做这件事很长的路要走。我要求一个“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com