Получить значения из Enum - PullRequest
0 голосов
/ 28 мая 2020

Как я могу получить специфицированное c значение из перечисления по заданному индексу.


enum genre { Pop, Jazz, Classic}; //enum
struct album
{

    string album_name;
    genre kind;
    int track_number;
    string tracks[5];
    string tracklocation;
};

void main()
{
    album x1;
    cout<<"Enter genre 0->pop, 1->Jazz, 2->Classic\n";
    cin>>temp;
    x1.kind=(genre)temp;   // typecasting for int to enum
    cout<<x1.kind<<endl;
}

Когда я запускаю этот код, я просто получаю целочисленное значение, которое я ввожу, вместо преобразованного значения перечисления

то, что мне нужно, - это когда пользователь вводит 0,1 или 2, его необходимо преобразовать с помощью перечисления в соответствующий жанр и сохранить в переменной структуры.

1 Ответ

0 голосов
/ 28 мая 2020

Вы не можете поместить идентификаторы (имена) enum в cout. Например, значение имени Pi в enum, предположим, установлено на 3.14. Вы напрямую хотите, чтобы пользователь ввел это значение, оно покажет строку Pi в потоке вывода, но нет, это только в пределах предполагаемого кода. Перечисление просто содержит константы.

По умолчанию ваше объявление enum {Pop, Jazz, Classic} содержит значения констант 0, 1 и 2 соответственно.

Вместо этого вы можете использовать строку с массивом для получения значения. Рассмотрим следующий пример:

struct album {
    string album_name;
    string genre[3] = {"Pop", "Jazz", "Classic"}; // this one holds 0 = "Pop" ...
    int track_number;
    string tracks[5];
    string tracklocation;
};

И код драйвера:

int main(void) {
    album x1;
    int temp;

    std::cout << "Enter genre 0->pop, 1->Jazz, 2->Classic\n";
    std::cin >> temp;

    std::cout << x1.genre[temp] << endl;
    // will display 0 = "Pop", 1 = "Jazz", 2 = "Classic"

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...