gpt4 book ai didi

C++ 错误 C2102 : '&' requires l-value

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:59 25 4
gpt4 key购买 nike

我正在使用 C++ 创建一个包含大量菜单和子菜单的控制台应用程序。我显示菜单的方式是通过一个 do-while 循环。我创建了一个函数来显示带有三个参数的菜单循环 - 第一个是与菜单中有多少选项相关的整数,第二个是显示菜单的函数,第三个是执行用户输入的选择的另一个函数.

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;
}

我收到的错误是“error C2102: '&' requires l-value”。我对编程有些陌生,这是我第一次将函数作为参数传递。我正在制作此功能以消除我已注释掉的代码。谁能指出我哪里出错了以及可能的解决方案。如果没有,我会为每个菜单使用重复代码,我知道这是不好的编程习惯。

最佳答案

您正在尝试获取由函数 displayInitialMenuperformSelectionInitialMenu 返回的值的地址,但是这两个函数都没有返回任何内容(void). 删除两个调用前面的 & 以解决此特定问题。

关于C++ 错误 C2102 : '&' requires l-value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10633766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com