2011-01-25 23 views
17

numaralı çağrı için herhangi bir eşleme işlevi bulunamadı. Bu kodu mac w/xcode'ımda evde derledim ve hiçbir provokasyon yoktu. Ben linux üzerinde ++ g ile okulda derlemek ve ben bu hataları alıyorum:‘numeric_limits’ bu kapsamda bildirilmemiş, ‘max() '

: 'numeric_limits' std
üyesi değildir: beklenen önce birincil ifade '>' belirteci
: çağrısına için eşleşen işlevi '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;  
} 

Ben geussing ediyorum belki fazladan başlığı dahil var. Ben std götürmek durumunda :: sadece benzer bir hatayı bana

‘numeric_limits’ bu kapsamda Sen std::numeric_limits tanımlanır nerede başlık dosyasını <limits> eklemenize gerek

+0

Nasıl kullanacağınızı öğrenmek için "numeric_limits" belgelerini okuduğunuzda, hangi başlığın içinde olduğunu söylemediniz mi? –

+0

Evet, ama bu bir süre önceydi ve daha sonra yeni projeyi diğer projeden gerçekleştirmeden kopyaladım. –

cevap

44

ilan edilmemiştir verir. Mac derleyiciniz otomatik olarak o başlık dosyasını dahil ederek size yardımcı oluyordu; Ancak, bu davranışa güvenmemelisiniz ve ihtiyacınız olan herhangi bir başlık dosyasını açıkça içermemelisiniz.

+5

Bu özellik için bir isim var mı? Nasıl devre dışı bırakacağımı öğrenmek istiyorum, böylece platform bağımsızlığını kırmam. – MatrixManAtYrService

İlgili konular