1. ホーム
  2. c++

[解決済み] 'numeric_limits' がこのスコープで宣言されていないため、'max()' の呼び出しにマッチする関数がない。

2022-02-19 19:25:44

質問

このコードを自宅のMacでxcodeを使ってコンパイルしたところ、何の問題もありませんでした。学校で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のコンパイラは、このヘッダーファイルを自動的にインクルードすることであなたを助けていましたが、この動作に依存せず、必要なヘッダーファイルは明示的にインクルードする必要があります。