C ++ Создание меню и подменю, которые вызывают функции, используя циклы while и переключатели - PullRequest
0 голосов
/ 04 мая 2020

Итак, я пытаюсь создать каталог библиотеки, используя объектно-ориентированные принципы (к которым я все еще довольно новичок). Часть моего кода - это открывающееся меню и последующие меню, доступные из вывода ответа пользователя на первое. В следующем фрагменте кода цель состоит в том, чтобы получить доступ к подменю «новый элемент», введя «1», а затем предложить пользователю, какой тип элемента данных он хочет ввести, что создает один из трех классов (в данном случае 'Film', потому что я еще не закодировал два других), полученных из класса 'Entry'.

Когда в подменю вводится «1», цель состоит в том, чтобы создать экземпляр класса Film, запросить у пользователя информацию, а затем добавить ее в каталог. Однако после ввода «1» открывающее меню выводится на экран, и вызов класса «Film» выполняется только после ввода числа «0». Я озадачен тем, почему это может происходить!

void Entry::menu() {

int index = 1;

string Menu = "Please enter the number corresponding to the service you require: \n"
    "1. Enter a new item into catalogue.\n"
    "2. Record an item as borrowed.\n"
    "3. Record an item as returned.\n"
    "(0. Exit program.)\n";

cout << Menu;

while (index != 0) {

    cin >> index;

    switch (index) {
    case 0: break;
    case 1: entryMenu(); cout << Menu; break;
    default: cout << Menu; break;
    }

}

}

void Entry::entryMenu() {

int index = 1;

string Menu = "Please enter the type of entry you wish to add: \n"
    "1. Film\n"
    "2. Book\n"
    "3. Music Album\n"
    "(0. Return to main menu.\n";

cout << Menu;

while (index != 0) {

    cin >> index;

    switch (index) {
    case 0: break;
    case 1: {
        Film Temp;
        index = Temp.addEntry();
        cout << Menu; }
    default: break;
    }
}
...