gpt4 book ai didi

c++ - void operator usage for calling menu

转载 作者:行者123 更新时间:2023-11-30 03:31:42 25 4
gpt4 key购买 nike

所以我有这部分代码并且我有这些错误,而不是发布我如何修复它们。谢谢你的帮助..

void DisplayMenu()
{
cout <<"Please choose from the following options :\n\n"
<<"1-al.\n"
<<"2-c.\n"
<<"3-v.\n\n"
<<"Or I want to see first :\n"
<<"------------------------\n\n"
<<"4-r.\n"
<<"5-m.\n"
<<"6-k.\n"
<<"7-d.\n"
<<"8-u.\n\n"
<<"Or :\n"
<<"----\n\n"
<<"9-I changed my mind and would like to exit.\n\n";
}

int ChooseFromMenu()
{
int A =0 ;
while ((DisplayMenu() && !(cin >> A ) || (cin.good() && (A < 1 || A > 9))) {
cout << "\nInvalid input!\n"<<endl;
cin.clear();
cin.ignore(1000, '\n');
}
return A;
}

这是我的错误列表

3   IntelliSense: expected a statement  
2 IntelliSense: expected a ')'
Error 1 error C4716: 'DisplayMenu' : must return a value

最佳答案

如果你真的想使用DisplayMenu在while循环的条件下,需要使用逗号运算符:

int ChooseFromMenu()
{
int A =0 ;
while (DisplayMenu(), (!(cin >> A ) || (cin.good() && (A < 1 || A > 9))) {
cout << "\nInvalid input!\n"<<endl;
cin.clear();
cin.ignore(1000, '\n');

}
return A;
}

这将调用 DisplayMenu ,扔掉(不存在的)返回值,然后评估实际情况。然而,就我个人而言,我会使用内部有条件中断的无限循环:

int ChooseFromMenu()
{
int A =0;
while (true) {
DisplayMenu();
if ((cin >> A)) {
if (!cin.good() || (1 <= A && A <= 9)) {
return A;
}
}
cout << "\nInvalid input!\n"<<endl;
cin.clear();
cin.ignore(1000, '\n');
}
}

我已将条件拆分为两个嵌入式 if这是因为我发现它比 && 的组合更容易阅读和 || . (我也喜欢在组合多重比较时总是使用 <<= - 我发现它更容易阅读。)

关于c++ - void operator usage for calling menu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44000303/

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