'numeric_limits' no se declaró en este alcance, sin función de coincidencia para llamar a 'max ()'
-
24-10-2019 - |
Pregunta
Compilé este código en casa en mi Mac con Xcode y no había problema. Lo compilo en la escuela con G ++ en Linux y obtengo estos errores:
: 'numeric_limits' no es miembro de STD
: Expresión primaria esperada antes de '>' Token
: No hay función coincidente para llamar a '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;
}
Estoy geusning, tal vez tengo que incluir un encabezado adicional. Si me quito la ETS :: Simplemente me da un error similar
'numeric_limits' no se declaró en este alcance
Solución
Debe incluir el archivo de encabezado <limits>
, cuál es dónde std::numeric_limits
se define. Su compilador de Mac lo estaba ayudando al incluir automáticamente ese archivo de encabezado; Sin embargo, no debe confiar en ese comportamiento e incluir explícitamente los archivos de encabezado que necesite.