'numeric_limits' не было объявлено в этой области, нет соответствующей функции для вызова 'max ()' - PullRequest
20 голосов
/ 26 января 2011

Я скомпилировал этот код дома на своем Mac с xcode, и никаких проблем не было. Я компилирую это в школе с g ++ на linux, и я получаю эти ошибки:

: «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 'не было объявлено в этой области

1 Ответ

49 голосов
/ 26 января 2011

Вам необходимо включить заголовочный файл <limits>, в котором определено std::numeric_limits. Ваш компилятор Mac помог вам, автоматически включив этот заголовочный файл; однако вы не должны полагаться на это поведение и явно включать любые необходимые вам заголовочные файлы.

...