2011-01-25 18 views
17

私はこのコードを私のMacのw/xcodeでコンパイルしました。私はLinux上++グラムで、学校でそれをコンパイルし、私はこれらのエラーを取得:'numeric_limits'がこのスコープ内で宣言されていませんでした。 'max()'の呼び出しで一致する関数がありません

:への呼び出しに該当する機能:トークン
「>」前に、プライマリ・表現予想:「numeric_limitsのは、」STD
のメンバーではありません'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;  
} 

余分なヘッダーを含める必要があります。私はSTDを奪う場合は::それはちょうど私のようなエラーを与える

「のnumeric_limits」は、この範囲で

+0

'numeric_limits'のドキュメントを読んで、その使い方を学んだら、どのヘッダが入っているのか教えてくれませんでしたか? –

+0

ええ、それはしばらく前ですが、私は最近、他のプロジェクトのコードをコピーせずに貼り付けてコピーしています。 –

答えて

44

を宣言されていないあなたはstd::numeric_limitsが定義されている場所であるヘッダファイル<limits>を含める必要があります。あなたのMacコンパイラは、そのヘッダファイルを自動的にインクルードすることであなたを助けてくれました。ただし、その動作に依存せず、必要なヘッダーファイルを明示的にインクルードする必要があります。

+5

この機能の名前はありますか?私はそれを無効にする方法を理解したいので、プラットフォームの独立性を損なうことはありません。 – MatrixManAtYrService

関連する問題