2017-05-09 2 views
0

私はC++を学んでいますが、関数を使って三角形の領域を表示するこの演習を行っていますが、エラー] 'calcarea'がこのスコープで宣言されていませんでした。 "C++でコンパイルエラーが発生しました。このスコープではcalcareaは宣言されていませんでした。

#include<iostream> 
#include<cstdlib> 
using namespace std; 
double farea; 

main(){ 
    float base, height; 
    cout<<"Enter base of triangle: "; cin>>base; 
    cout<<"Enter height of triangle: "; cin>>height; 
    cout<<endl; 

    farea = calcarea(base,height); 
    cout<<"The area of the triangle is: "<<farea; 
    system("pause>nul"); 
} 

double calcarea(float ba, float he){ 
    double area; 

    area = (ba*he)/2; 
    return area; 
} 

答えて

2

コンパイラは先頭から最後までコードを読み取り、最初にシンボル(この場合はcalcarea)が検出されると、シンボルが宣言されているかどうかを確認します。 calcareaだけ後を宣言されているので、コンパイラは、その時点で、それゆえ、この記号を認識していない、それはマッサージです:あなたがする機能を移動します場合石灰海綿綱がこの範囲

で宣言されていませんでした最初の呼び出しの前に、このエラーは解決されます。 double calcarea(float ba, float he);

main(){ 
    float base, height; 
    cout<<"Enter base of triangle: "; cin>>base; 
    cout<<"Enter height of triangle: "; cin>>height; 
    cout<<endl; 

    farea = calcarea(base,height); // here your compiler must already know what is calcarea, either by moving the definition, or only adding declaration 
    cout<<"The area of the triangle is: "<<farea; 
    system("pause>nul"); 
} 
+1

感謝:この問題を解決する別の方法は、あなたはそれがあなたの関数を残したが、メインの前に、それを定義する行を追加します、意味を本体のみ前に関数を宣言し、後に、それを定義することです出来た! – OsmaK

2

コンパイラがあなたの手助けをしています。あなたがcalcareaと呼んでいる時点ではまだ宣言されていません。それを移動するか、mainの前に宣言してください。

関連する問題