首页 > 解决方案 > 为什么此 cin 验证不适用于其他文件,而仅适用于一个文件?

问题描述

我正在尝试在我的项目的每个输入上使用此 cin 验证,主要用于“选择”活动。

if (cin.fail()) { // Failed to parse input correctly
    cin.clear(); // Clear the internal flags
    cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Ignore the rest of the buffer
}

此代码仅适用于一个文件,即 Menu.cpp,而不适用于 Conference.cpp。它显示了一个错误,即“E0040 需要一个标识符”,并突出显示了 max() 语法。我也尝试将代码从 Menu.cpp 复制到 Conference.cpp,但它仍然在 Conference.cpp 上显示相同的错误。我不知道是什么导致了错误。

菜单.h

#pragma once
class Menu
{
public:
    Menu();
    void mainmenu();
    void dataregmenu();
    ~Menu();
};

菜单.cpp

#include "Menu.h"
#include "Menu_controller.h"
#include <iostream>
using namespace std;

Menu::Menu()
{
    
}

void Menu::mainmenu()
{
    int choose;

    cout << "-----Conference Vault----- \n\n";
    cout << "1. Data Registration \n";
    cout << "2. Conference \n";
    cout << "3. Report \n\n";
    cout << "Choose: ";

    cin >> choose;

    if (cin.fail()) { // Failed to parse input correctly
        cin.clear(); // Clear the internal flags
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Ignore the rest of the buffer
    }

    new Menu_controller(choose);
}

void Menu::dataregmenu()
{
    int choose;

    cout << "-----Data Registration----- \n\n";
    cout << "1. ADUN \n";
    cout << "2. Department \n\n";
    cout << "3. Back \n\n";
    cout << "Choose: ";

    cin >> choose;

    if (cin.fail()) { // Failed to parse input correctly
        cin.clear(); // Clear the internal flags
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Ignore the rest of the buffer
    }

    
}

Menu::~Menu()
{
}

会议.h

#pragma once
#include <iostream>
using namespace std;

class Conference
{
public:
    Conference();
    void conferencemenu();
    void addconference();
    ~Conference();
};

会议.cpp

#include "Conference.h"
#include "Conference_controller.h"
#include <iostream>
using namespace std;

Conference::Conference()
{
    
}

void Conference::conferencemenu()
{
    int choose;

    cout << "Choose what to do: \n\n";
    cout << "1. Add new conference \n";
    cout << "2. Find conference \n\n";
    cout << "3. Back \n\n";
    cout << "Choose: ";

    cin >> choose;

    if (cin.fail()) { // Failed to parse input correctly
        cin.clear(); // Clear the internal flags
        cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // Ignore the rest of the buffer
    }

    new Conference_controller(choose);
}

void Conference::addconference()
{
    string year, month, number;
    Conference_controller conf;

    cout << "-----New Conference----- \n\n\n";
    cout << "Please fill in the required fields: \n\n";
    cout << "Year: ";
    cin >> year;
    cout << "Month: ";
    cin >> month;
    cout << "Number: ";
    cin >> number;

    conf.addconference(year, month, number);
}

Conference::~Conference()
{
}

标签: c++visual-studio-2019

解决方案


推荐阅读