C++ C++;枚举中的名称显示为字符串

C++ C++;枚举中的名称显示为字符串,c++,string,enums,C++,String,Enums,我正在为学校做一个小项目,必须创建一个怪物类型的枚举,然后创建一个函数,该函数接受一个值并将怪物类型显示为字符串。以下是我的代码: enum MonsterType { GHOST, DRAGON, GHOUL, SHRIEKER, GRIFFIN, }; string getTypeName() { int ID; cout << "Input Monster ID" << endl; cin >&

我正在为学校做一个小项目,必须创建一个怪物类型的枚举,然后创建一个函数,该函数接受一个值并将怪物类型显示为字符串。以下是我的代码:

enum MonsterType
{
    GHOST,
    DRAGON,
    GHOUL,
    SHRIEKER,
    GRIFFIN,
};

string getTypeName()
{
    int ID;
    cout << "Input Monster ID" << endl;
    cin >> ID;
    return MonsterType(ID);
}
枚举类型
{
鬼魂,
龙
食尸鬼,
尖叫声,
格里芬,
};
字符串getTypeName()
{
int-ID;
cout-ID;
返回类型(ID);
}
我得到的错误如下:

no suitable constructor exists to convert from "MonsterType" to "std::basic_string<char, std::char_traits<char>, std::allocator<char>>"
不存在合适的构造函数将“MonsterType”转换为“std::basic_string”

'return':无法从'MonsterType'转换为'std::basic_string'
我肯定有一点我不知道,也不知道,如果你能帮助我,我会非常感激

谢谢你

你能做的就是

enum MonsterType
{
    GHOST,
    DRAGON,
    GHOUL,
    SHRIEKER,
    GRIFFIN,
};

string GetName(MonsterType monsterType){
  string monsterNames[] = {"Ghost", "Dragon", "Ghoul", "Shriker", "Griffin"};
  return monsterNames[monsterType];
}

这两个错误说的是同一件事

您的
返回怪物类型(ID)
正在获取一个新的
怪物类型
,并尝试返回它

该函数是原型的
string getTypeName()
(如果您想说“无参数”,那么实际上应该是
string getTypeName(void)
),因此您试图将新的
MonsterType
变量转换为
string
。编译器正在抱怨它不知道如何做到这一点

最好的方法是为您定义的每种moster类型创建一个文本(
string
)表示列表,并在它们之间创建函数映射

#包括
#定义数组大小(x)(sizeof(x)/sizeof(x[-1]))
使用名称空间std;
枚举类型
{
鬼魂,
龙
食尸鬼,
尖叫声,
格里芬,
};
字符串名称[]={
“鬼”,
“龙”,
“食尸鬼”,
“尖叫者”,
“格里芬”,
};
字符串getTypeName()
{
int-ID;
cout-ID;
if(ID<数组大小(名称)){
返回名称[ID];
}
返回“未知”;
}
内部主(空){

我能肯定有一点转换吗?我不知道是什么让你如此确信,
MonsterType
,和
std::string
?它应该如何表现?不,我是说我可以做一个转换。这可能只是一件我不知道的小事情。我已经回答了很多问题。SeaRC++在Internet上使用“StAdvOpjultC++ + EnUM转换字符串”。在C++语言中没有任何设备可以将EnUM(整型值)转换为标识符名称。在构建阶段,忽略标识符名称(除了调试构建,保留一些符号名)。。您必须提出自己的转换方案。这是与
enum
定义不同步的绝佳机会。最好使用同时包含
enum
标识符和文本的结构。搜索internet或StackOverflow以获取示例。非常感谢您的回复,但请不要重复这就是使用怪物类型枚举的目的吗?是的,这是真的,但是作为一个小的学校项目应该足够好了,我想这是唯一简单的方法。非常感谢。
enum MonsterType
{
    GHOST,
    DRAGON,
    GHOUL,
    SHRIEKER,
    GRIFFIN,
};

string GetName(MonsterType monsterType){
  string monsterNames[] = {"Ghost", "Dragon", "Ghoul", "Shriker", "Griffin"};
  return monsterNames[monsterType];
}