'Numeric_limits не был объявлен в этой области, никакая соответствующая функция для вызова' max()
Я скомпилировал этот код дома на моем mac w/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
Вам нужно указать заголовочный файл <limits>
, где указано std::numeric_limits
. Ваш Mac-компилятор помог вам автоматически включить этот заголовочный файл; однако вы не должны полагаться на это поведение и явно включать любые файлы заголовков, которые вам нужны.