#include <iostream>
#include <string>
#ifndef en
#define en std::endl
#endif
using namespace std;
int login() {
//Basic login program
login:
string correctPass = "Love";
string attemptPass;
cout << "Please insert password" << en;
cin >> attemptPass;
if (attemptPass == correctPass) {
cout << "Access Granted" << en << en;
} else {
goto login;
}
return 0;
}
int main() {
// Everything below is main menu crap that I want to turn into a function that somehow allows goto statements
login();
mainMenu:
cout << en << "MAIN MENU" << en << en << "Payroll" << en << "Employees" << en << en;
string mainMenuOption;
cin >> mainMenuOption;
if (mainMenuOption == "Payroll" || "payroll") {
goto payroll; }
else if (mainMenuOption == "Employees" || "employees") {
goto employees; }
else {
goto mainMenu; }
payroll:
cout << "Fish";
return 0;
employees:
cout << "Eleven";
return 0;
}
基本上,我想將main菜單中的主菜單部分變成一個以某種方式保存goto短語的函數。我該怎麼做呢?我的意思是,我明白goto和功能不能很好地協同工作,但是有沒有另一種方法至少可以接近?如何創建一個具有goto語句的主菜單功能?
請不要在代碼中使用'goto'。可能有些情況需要它,但這不是其中之一。使用循環和函數代替'goto'。 – NathanOliver
跳過非平凡初始值設定項或析構函數的Gotos是災難的祕訣。 –
將'en'的定義更改爲'#define en'\ n'',除非您需要'std :: endl'的額外內容。 –