2016-05-29 12 views
-4

こんにちは、私はC++を新しくしています。私は初心者です、助けてください、それはあなたです。C++エラー: 'count_of_function_calls'がこのスコープで宣言されていませんでした。

#include <iostream> 

using namespace std; 

int dostuff() 
{ 
    return 2 + 3; 
} 
void fun() 
{ 
    count_of_function_calls++; 
} 

int main() 
{ 

    void fun(); 
void fun(); 
void fun(); 
cout << "Function fun was called" << count_of_function_calls << "times"; 
} 
+2

そして、 'count_of_function_calls'は実際にそのスコープ(スコープ)で宣言されませんでした。 – LogicStuff

+2

試行錯誤してC++を習得しようとしないでください。代わりに良い本から系統的に学ぶ。 –

+0

@BaummitAugen _ "試行錯誤してC++を習得しようとするのを止めるべきです..."もしそうなら、OPはここでエラーを尋ねるべきではありません。 –

答えて

1

は、私はあなたが

fun(); 

この

のようになります例

#include <iostream> 

using namespace std; 

int count_of_function_calls; 

int dostuff() 
{ 
    return 2 + 3; 
} 
void fun() 
{ 
    count_of_function_calls++; 
} 

//... 

関数呼び出しのためにグローバル変数count_of_function_calls

を定義するために忘れてしまったと思います

は関数宣言です。それは関数の呼び出しではありません。

2

多く、多くの問題、あなたは間違いなくC++の本を読んだり、いくつかのチュートリアルあなたがcount_of_function_callsを定義しなかった


を再読み込みする必要がありますか?

これは、コンパイラが不平を言っている理由です。 (

int count_of_function_calls = 0; 

注意を使用すると、各関数呼び出しのためにインクリメントされるcount_of_function_callsの値にしたいので、あなたのケースでは、あなたはグローバル変数として宣言する必要があること:あなたは常には、あなたがそれらを使用する前に変数を宣言する必要がありますこれはが推奨されていません、別のものを使用することを検討してください)。

グローバル変数はスコープの外で宣言されます。たとえば、void fun()の直上に定義することができます。


void fun();引数を取らないとvoidを返す、(funと呼ばれる)関数を宣言します。 は、funを呼び出しません。関数を呼び出す場合は、戻り値の型を指定する必要はありません。戻り値の型を指定する必要はありません。関数呼び出しではなく、Btw、 `void fun();`は戻り値の型を指定する必要はありません:

//Call function 'fun' 
fun(); 
関連する問題