だから私はcinから有効な整数入力を取得しようとしていて、この質問への答えを使用しました。
推奨:
#include <Windows.h> // includes WinDef.h which defines min() max()
#include <iostream>
using std::cin;
using std::cout;
void Foo()
{
int delay = 0;
do
{
if(cin.fail())
{
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
cout << "Enter number of seconds between submissions: ";
} while(!(cin >> delay) || delay == 0);
}
max
これは、マクロがそれほど多くの引数をとらないと言って、Windowsでエラーを出します。つまり、私はこれをしなければなりません
do
{
if(cin.fail())
{
cin.clear();
#undef max
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
cout << "Enter number of seconds between submissions: ";
} while(!(cin >> delay) || delay == 0);
それを機能させるため。それはかなり醜いです。この問題を回避するためのより良い方法はありますか?たぶん私はそれの定義を保存し、max
後でそれを再定義する必要がありますか?