このコードをxcodeを使用してMacで自宅でコンパイルしましたが、問題はありませんでした。学校でLinux上のg ++を使用してコンパイルすると、次のエラーが発生します。
: ‘numeric_limits’はstdのメンバーではありません
: ‘>’トークンの前に期待されるプライマリ式
:「max()」の呼び出しに一致する関数がありません
#include <iostream>
#include <cstdlib>
using namespace std;
int GetIntegerInput(int lower, int upper)
{
int integer = -1;
do
{
cin >> integer;
cin.clear();
cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); //errors here
}while (integer < lower || integer > upper);
return integer;
}
多分私は余分なヘッダーを含める必要があると思います。 std ::を削除すると、同じようなエラーが発生します
「numeric_limits」はこのスコープでは宣言されていません
ヘッダーファイルを含める必要があります<limits>
、これはstd::numeric_limits
が定義されています。あなたのMacコンパイラは、そのヘッダファイルを自動的にインクルードすることであなたを助けていました。ただし、その動作に依存せず、必要なヘッダーファイルを明示的に含める必要があります。