‘Numeric_limits’ non è stato dichiarato in questo ambito, nessuna funzione di corrispondenza per chiamata a ‘max ()’
-
24-10-2019 - |
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
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.