gpt4 book ai didi

c++ - 在 C++ 中使用点运算符将枚举变量添加到结构变量中有困难吗?

转载 作者:行者123 更新时间:2023-11-27 23:50:22 27 4
gpt4 key购买 nike

本质上,我有一个视频游戏统计数据结构就像我的 C++ 程序中的以下内容:

struct Game
{
string title;
genre this_genre;
int this_rank;
float time;
};

我还定义了枚举类型类型:

enum genre {FPS, MOBA, ROLEPLAY};

我已经声明了一个名为 NewGame 的抽象结构变量

Game NewGame

我的目标是让用户从标准输入定义结构变量 NewGame 的成员。我对结构的其他成员这样做没有问题,但我似乎无法弄清楚如何让用户将枚举器存储在结构的枚举成员中。

cout << "Enter the title for your game: ";
getline(cin, NewGame.title);

cout << "Enter the rank of your game: ";
cin >> NewGame.this_rank;

// The genre currently breaks the code:
cout << "Enter the genre of the game: ";
cin >> NewGame.this_genre;

cout << "Enter the time (days) spent playing your game: ";
cin >> NewGame.time;

我尝试将其静态转换为整数,但随后我重载了插入运算符。

cin >> static_cast<int>(NewGame.this_genre); // doesn't work. 

我希望用户能够提供值 0、1 或 2,并将它们分别分配给 FPS (0)、MOBA (1) 或 ROLEPLAY (2)。

我做错了什么?我不明白什么?

最佳答案

你必须读入一个临时int然后然后使用static_cast<genre>获取枚举值。

int value;
cin >> value;
NewGame.this_genre = static_cast<genre>(value);

你可以用这个“让你的代码工作”:

cin >> reinterpret_cast<int&>(NewGame.this_genre);  // bad

但不要那样做,因为通过这种带有类型双关的引用来赋值是未定义的行为。

关于c++ - 在 C++ 中使用点运算符将枚举变量添加到结构变量中有困难吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46903585/

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