38

このコードを自宅の Mac で xcode を使用してコンパイルしましたが、問題はありませんでした。Linuxでg ++を使用して学校でコンパイルすると、次のエラーが発生します。

numeric_limits' は std のメンバーではありません

'>' の前に一次式が必要です トークン

「max()」の呼び出しに一致する関数がありません</p>

#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このスコープで宣言されていませんでした

4

2 に答える 2

73

が定義され<limits>ているヘッダー ファイルを含める必要があります。std::numeric_limitsMac コンパイラは、そのヘッダー ファイルを自動的にインクルードすることで、あなたを助けてくれました。ただし、その動作に依存したり、必要なヘッダー ファイルを明示的に含めたりしないでください。

于 2011-01-25T21:20:50.107 に答える