2017-03-04 6 views
-4

動作しません。しかし、 "using namespace std;"を追加するとwhileループで "count undeclared"というエラーメッセージが表示されます。 "int count"の前に "static"を追加しても同じことが言えます。私はC++を初めて使っているので、スコープなどを完全には理解していません。誰かが説明できますか?前もって感謝します!C++:名前空間を使用するには、グローバル変数は、私は、次の問題を抱えて

+2

[いいえrepro](http://coliru.stacked-crooked.com/a/667974613315759d)。動作しないコードの[MCVE]を投稿してください。 –

+1

皆さんの参照のためのコードに 'using namespace std;'ステートメントを記述してください。また、どのコンパイラで作業していますか?私はそれを再現することができませんでした:http://coliru.stacked-crooked.com/a/8b9ef25d202c5af9 – batbrat

+0

質問は、**動作**のコードを示していますが、**動作しないコードを表示する必要があります**。 –

答えて

3

名前空間stdも名前countと宣言しています。この名前は、標準アルゴリズムstd::countに対応しています。 あなたはディレクティブ

using namespace std; 

と使用非修飾名count

このような中(count--){// ... }

が含まれている場合ので、そこもできますあいまいさ

あいまいさを解決するには、修飾名を使用する必要があります。一般的に例

using namespace std; 

    //... 

    while(::count--) { 
      ^^^^^^^^ 
     //... 
    } 

のために、あなたの例のように、このようなあいまいさにつながることができますディレクティブを使用することはお勧めできません。

1

これは、 'count'という名前がstd llibraryに別の定義を持つために起こります。 ここをクリック - http://en.cppreference.com/w/cpp/algorithm/count

std::count 

カウントは、カウントvarableとstd libにからのカウントテンプレートの間で伝えるカントusing namespace stdコンパイラを使用した後、スタンダールライブラリでdefintedたテンプレート定義です。 カウント整数名を変更したいかもしれません:)

+0

コンパイラ固有の実装上の問題でなければなりません( 'algorithm'は' iostream'に含まれています)。 –

+0

ありがとう、なぜ私は自分自身で答えに到達していないのだろうと思っています。 :) – Yinyue

0

グローバル変数を呼び出す必要があるときはいつでも、グローバル変数*/ :: :: operatorを呼び出すために使用される接頭辞演算子は、 :: count/* ::となります。混乱しないようにしてください。

関連する問題