C++ void运算符用于调用菜单
所以我有这部分代码,我有这些错误,我将发布如何修复它们。谢谢你的帮助C++ void运算符用于调用菜单,c++,C++,所以我有这部分代码,我有这些错误,我将发布如何修复它们。谢谢你的帮助 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"
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;
}
您在ChooseFromMenu()的while循环中忘记了一个括号。这可能导致了其中两个错误。由于returntrue不起作用,您可能忘记了将方法头从void更改为boolean。(cin>>A)也返回void。您在
循环参数中错误使用了条件:
while ((DisplayMenu() && !(cin >> A ) || (cin.good() && (A < 1 || A > 9)))
:
#包括
使用名称空间std;
int DisplayMenu()
{
cout如果您确实想在while循环的条件下使用DisplayMenu
,则需要使用逗号运算符:
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;
}
我把条件分解成两个嵌入的<代码>,如果>s,比> & & 和 < <代码> >更容易阅读。(我也喜欢基本上总是使用<代码>,不要试着把C++写成C++那样。调用<代码>控制台。(然后修复错误,您有一个方法,它是要返回bool
,但您没有返回任何内容…)我想他只是误用了C标签,他想用C++来标记。对不起,我想它是空的。我现在就改变它。我怎么能使用空洞并修改它来显示每次输入错误的输入?好,现在你的错误信息之一会消失…请提供你实际编译过的。(而不是像你编译过的那样编写代码)。另外,请注意源代码布局……我仍然得到display应该返回一个值???@davidfoster用编辑过的代码更新你的问题,我会检查是什么导致了错误。顺便说一句,更改DisplayMenu
以匹配ChooseFromMenu
似乎有问题。(DisplayMenu
不必返回值)。最好是修复ChooseFromMenu
并将DisplayMenu()
放在循环的前面和里面(在cin.忽略之后)。如果在编译器需要布尔条件的地方使用它…它不是黑客。如果这样使用,DisplayMenu必须返回值。它永远不会返回false
,因此DisplayMenu()
返回的事实很奇怪。您可以在调用站点使用(DisplayMenu(),true)
取而代之,但这也很奇怪。我将displayMenu更改为bool,并添加了return A;但不工作,甚至返回true notworking@davidfostercin>>a也返回void@AppWritercin>>A
将返回void*
,因此!(cin>>A)
将返回0
。这意味着(DisplayMenu()&&&!(cin>>A))
将始终返回0
值,该值在C/C++中等于FALSE
。
bool DisplayMenu()
{
// your logic
return true;
}
#include <iostream>
using namespace std;
int 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";
return 1;
}
int ChooseFromMenu()
{
int A =0 ;
if ((DisplayMenu() && !(cin >> A )) || (cin.good() && (A < 1 || A > 9))) {
cout << "\nInvalid input!\n"<<endl;
cin.clear();
cin.ignore(1000, '\n');
}
return A;
}
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;
}
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');
}
}