- ベストアンサー
Cygwinでg++がグローバル関数をはじいてしまう
現在Win XP上にGygwinを導入し C++の勉強をしています。 書籍を購入し、以下のプログラムを試したところ グローバル関数宣言をしているにもかかわらず main() とfunc1()中で変数”count”が undeclared (first use this function) として弾かれてしまいます。 どうしてなのでしょうか? よろしくお願いします。 //example global variavle. #include<iostream> using namespace std; void func1(); void func2(); static int count; //This is global variavle. int main() { int i; //This is local variavle. for(i=0; i<10 ; i++){ count = i * 2; func1(); //calling func1(). } return 0; } void func1() { cout << "count: " << count; //access global "count" cout << "\n"; func2(); //calling func2(). } void func2() { int count; //define local "count" for(count=0;count<3;count++) { cout << "."; } }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
グローバルスコープ解決演算子 ( :: ) をつければいいと思います。 ::count = i * 2; cout << "count: " << ::count; //access global "count"
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
うん? #include <algorithm> しているなら「count があいまい」というエラーにはなるけど, 「undeclared」はおかしいと思う. とりあえず g++ のバージョンと, あと「正確なエラーメッセージ」を書いてもらえないでしょうか.
お礼
皆さんの素早い対応のおかげで 詳しく説明させていただく前に解決してしまいました; 回答ありがとうございました。
- hidebun
- ベストアンサー率50% (92/181)
countに対する解釈が、 std::count()か、グローバル変数か、どっちかわからんということだと思う。 http://d.hatena.ne.jp/yatt/20090216/1234807204
お礼
ありがとうございました 皆さんのご指摘のおかげで解決しました
お礼
ありがとうございました ご指摘いただいたとおりに グローバルスコープ演算子をつけたところ 正常に動作しました。