【问题标题】:Get an enum type for a class using cin使用 cin 获取类的枚举类型
【发布时间】:2013-11-18 17:44:27
【问题描述】:

我想提示用户告诉我这本书属于哪种类型。我想我可能会给用户一个菜单,让他们在其中输入数字以进行任何选择。我想知道你是否可以让用户输入的名称像流派的字符串一样?

class Book
{
public:

    enum Genre
        {
        fiction,
        nonfiction,
        periodical,
        biograhpy,
        children
        };

    //...

    void get_genre();

    //...


private:

    //...
    Genre      genre;

};

//========================================================================================
//========================================================================================
void Book::get_genre()
{   



return;

}

【问题讨论】:

标签: c++ function class enumerator


【解决方案1】:

您必须自行将枚举值的名称映射到它们的值。您可以使用std::map<string, Genre>std::unordered_map<string, Genre>(如果c++11 可用)。无法将值的名称转换为其在C++ 中的值。

【讨论】:

  • 您的意思是从用户那里获取一个字符串,然后将其与 switch 或 if 语句中的 Genre 类型进行匹配?
  • @user2904033 使用std::map,不必使用ifswitch 来映射值。
  • @user2904033 我的意思是地图,因为解决方案更加动态,并且通过这种方式为枚举添加另一个值更容易。 switch 语句仍然是一个很好的解决方案,但它更难扩展
猜你喜欢
  • 2017-01-14
  • 2015-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多