Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ void运算符用于调用菜单_C++ - Fatal编程技术网

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@AppWriter
cin>>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');
    }
}