• ベストアンサー

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 << "."; } }

質問者が選んだベストアンサー

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

グローバルスコープ解決演算子 ( :: ) をつければいいと思います。 ::count = i * 2; cout << "count: " << ::count; //access global "count"

rukusu
質問者

お礼

ありがとうございました ご指摘いただいたとおりに グローバルスコープ演算子をつけたところ 正常に動作しました。

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

うん? #include <algorithm> しているなら「count があいまい」というエラーにはなるけど, 「undeclared」はおかしいと思う. とりあえず g++ のバージョンと, あと「正確なエラーメッセージ」を書いてもらえないでしょうか.

rukusu
質問者

お礼

皆さんの素早い対応のおかげで 詳しく説明させていただく前に解決してしまいました; 回答ありがとうございました。

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2

countに対する解釈が、 std::count()か、グローバル変数か、どっちかわからんということだと思う。 http://d.hatena.ne.jp/yatt/20090216/1234807204

rukusu
質問者

お礼

ありがとうございました 皆さんのご指摘のおかげで解決しました

関連するQ&A