c++ - 为什么此 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()
{
}
解决方案
推荐阅读
- r - 如何使用 R 中的某些标准将一个值更改为另一个值?
- c# - 如何将 WPF 控件绑定到字典中对象的属性?
- python - 查找值在范围列表中的位置的 Pythonic 方法
- python - 布尔情况
- javascript - 如何替换由本地状态填写的字段并使用 Redux-Form 设置它们?
- animation - Flutter 动画插值
- ansible - 在ansible中,什么时候使用shell vs script模块来运行一个shell脚本
- javascript - 覆盖 jsSocials 链接以执行自定义函数
- django - Django rest 框架:post() 外键时出错
- python - Google Maps Directions API 优化超过 23 个航点的航点