‘Numeric_limits’ non è stato dichiarato in questo ambito, nessuna funzione di corrispondenza per chiamata a ‘max ()’

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

Domanda

ho compilato il codice a casa sul mio mac w xcode / e non c'era provblem. Compilo a scuola con g ++ su Linux e ottengo questi errori:

: ‘numeric_limits’ non è un membro di
std : Atteso primaria espressione prima di ‘>’ token
: Nessuna funzione di corrispondenza per chiamata 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;    
} 

Sono geussing forse devo includere un'intestazione supplementare. Se mi togli lo std :: appena mi dà un errore simile

‘numeric_limits’ non è stato dichiarato in questo ambito

È stato utile?

Soluzione

È necessario includere il file di intestazione <limits>, che è dove si definisce std::numeric_limits. Il compilatore Mac ti stava aiutando includendo automaticamente il file di intestazione; tuttavia, non si dovrebbe fare affidamento su quel comportamento e includere esplicitamente tutti i file di intestazione necessari.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top