2011-01-25 47 views
17

tôi biên soạn mã này ở nhà trên mac của tôi w/xcode và không có provblem. Tôi biên dịch nó ở trường với g ++ trên Linux và tôi nhận được các lỗi này:‘numeric_limits’ đã không được khai báo trong phạm vi này, không có chức năng phù hợp cho cuộc gọi đến ‘max()’

: 'numeric_limits' không phải là một thành viên của std
: dự kiến ​​ban đầu thể hiện trước '>' dấu hiệu
: không có chức năng phù hợp cho cuộc gọi đến '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;  
} 

Tôi đang định vị có lẽ tôi phải bao gồm thêm tiêu đề. Nếu tôi lấy đi std :: nó chỉ mang lại cho tôi một lỗi tương tự

‘numeric_limits’ đã không được khai báo trong phạm vi này

+0

Khi bạn đọc tài liệu về 'number_limits' để tìm hiểu cách sử dụng nó, nó có cho bạn biết tiêu đề của nó là gì không? –

+0

vâng, nhưng đó là một thời gian trước, và sau đó tôi vừa mới sao chép dán mã từ dự án khác của tôi mà không nhận ra. –

Trả lời

44

Bạn cần phải bao gồm các tập tin tiêu đề <limits>, đó là nơi std::numeric_limits được định nghĩa. Trình biên dịch Mac của bạn đã giúp bạn bằng cách tự động bao gồm tệp tiêu đề đó; tuy nhiên, bạn không nên dựa vào hành vi đó và bao gồm rõ ràng bất kỳ tệp tiêu đề nào bạn cần.

+5

Có tên cho tính năng này không? Tôi muốn tìm hiểu làm thế nào để vô hiệu hóa nó vì vậy tôi không phá vỡ nền tảng độc lập. – MatrixManAtYrService

Các vấn đề liên quan