많은 메뉴와 하위 메뉴로 C++에서 콘솔 응용 프로그램을 만들고 있습니다. 메뉴를 표시하는 방법은 do-while 루프를 사용하는 것입니다. 세 개의 매개 변수로 메뉴 루프를 표시하는 함수를 만들었습니다. 첫 번째는 메뉴에 몇 개의 옵션이 있는지에 관한 정수이고, 두 번째는 메뉴를 표시하는 함수이고 세 번째는 사용자가 입력 한 선택을 수행하는 다른 함수입니다. .C++ 오류 C2102 : '&'에 I 값이 필요합니다.
class Menu {
public:
void displayInitialMenu(){
system("cls");
string menu = "\n\t\tXXXXXXXXX"\
"\n\n Please select from the following:"\
"\n\n 1. XXXXXXX"\
"\n\n 2. XXXXXXX"\
"\n\n 3. Exit\n";
cout << menu << endl;
}
static bool checkOption (int option, int lower, int upper){
if ((option < lower) || (option > upper)){
return false;
} else {
return true;
}
}
static int readOption(int lower, int upper){
int option = 0;
bool validMenuOption = false;
do{
std::cin >> option;
validMenuOption = checkOption(option, lower, upper);
if (!validMenuOption){
std::cout << "\nError: Input must be between " << lower;
std::cout << " and " << upper << "\n" << std::endl;
}
} while (!validMenuOption);
return option;
}
};
Menu menu;
void menuLoop(int numberOfOptions, void (*displayMenu)(), void (*switchStatement)()){
int menuOption = numberOfOptions;
do {
(*displayMenu)();
menuOption = menu.readOption(1, numberOfOptions);
(*switchStatement)();
} while (menuOption != numberOfOptions);
}
static void performSelectionInitialMenu(int option){
switch (option){
case 1:
break;
case 2:
break;
case 3:
break;
default:
break;
}
}
int main()
{
/*
int menuOption = 3;
do {
menu.displayInitialMenu();
menuOption = menu.readOption(1, 3);
performSelectionInitialMenu(menuOption);
} while (menuOption != 3);
*/
menuLoop(3, &menu.displayInitialMenu(), &performSelectionInitialMenu(3));
return 0;
}
I 받고있어 오류가 입니다 : "오류 C2102은 '&는'L-값이 필요합니다." 프로그래밍에 익숙하지 않은데, 함수로 매개 변수를 전달하는 것은 이번이 처음입니다. 내가 주석 처리 한 코드를 제거하기 위해이 함수를 만들고 있습니다. 누구든지 내가 잘못하고 가능한 해결책을 지적 할 수 있습니다. 그렇지 않다면, 나는 나쁜 프로그래밍 실습이라고 알고있는 각 메뉴에 대해 중복 코드를 사용할 것입니다.
** 최소 ** 코드를 게시하십시오. 온라인에서 질문하는 첫 번째 단계는 코드를 여전히 압축하여 문제를 해결하는 것입니다. 이것은 숙제의 일부이며, 우리의 과제를 훨씬 쉽게 만듭니다. –
또한 오류 메시지를 게시 할 때 발생한 오류 번호를 포함하여 전체 오류 메시지를 게시하십시오. – irobot