'numeric_limits' no se declaró en este alcance, sin función de coincidencia para llamar a 'max ()'

StackOverflow https://stackoverflow.com/questions/4798936

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

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top