2012-02-05 15 views
1

なぜこのプログラムが動作しないのか分かりません。私はそれが基本的なものだと確信しています。2点間の距離計算時のコンパイルエラー

#include <iostream> 
using namespace std; 
class MyPoint 
{ 
    int x; 
    int y; 
public: 
    MyPoint() 
    { 
     x = 0; 
     y = 0; 
    } 

    MyPoint(int newX, int newY) 
    { 
     x = newX; 
     y = newY; 
    } 

    int getX() 
    { 
     return x; 
    } 

    int getY() 
    { 
     return y; 
    } 

    int distance(MyPoint newPoint) 
    { 
     distance = x - newPoint.getX();//need absolute value function 
     return distance; 
    }; 

    int main() 
    { 
    MyPoint point1(0,0); 
    MyPoint point2(5,5); 

    cout << "THe distance between the two circles is " << point1.distance(point2) << endl; 

    return 0; 
    } 

私は2点間の距離を見つけようとしており、クラスを正しく使用していることを確認するためにテストしています。私はちょうどxポイントを使用しています。今すぐコードはコンパイルされません。

+1

コンパイラはどのようなエラーを出すのですか? –

+0

将来、コンパイラエラーを貼り付ける必要があります。 –

+0

ちょっと余分なアドバイス。コードには常に正しいインデントスキームがあり、コードの流れを理解するのに役立つように中括弧を正しく使用するようにしてください。 – Lefteris

答えて

3

によって指摘腹筋を追加しました:ここ

int distance(MyPoint newPoint) 
{ 
    distance = x - newPoint.getX();//need absolute value function 
    return distance; 
}; 

、あなたが持っています変数distanceはどこにも宣言されておらず、関数名でもオーバーロードされています。

オプション1:

int distance(MyPoint newPoint) 
{ 
    int d = x - newPoint.getX(); // renamed d, adding int 
    return d; 
}; 

オプション2:今すぐ

int distance(MyPoint newPoint) 
{ 
    return x - newPoint.getX(); 
}; 
0

中括弧内に間違いがあります。

以下のコードが正しく実行されます(EDIT) - あなたの問題はdistance機能であるとして正しくAIを

#include <iostream> 
using namespace std; 
class MyPoint 
{ 
int x; 
int y; 
public: 
MyPoint() 
{ 
    x = 0; 
    y = 0; 
} 

MyPoint(int newX, int newY) 
{ 
    x = newX; 
    y = newY; 
} 

int getX() 
{ 
    return x; 
} 

int getY() 
{ 
    return y; 
} 

int distance(MyPoint newPoint) 
{ 
    return abs(newPoint.getX() - x);//need absolute value function 

} 
}; 

int main() 
{ 
MyPoint point1(0,0); 
MyPoint point2(5,5); 

cout << "THe distance between the two circles is " << point1.distance(point2) << endl; 

return 0; 
} 
4

、あなたの最初の代わりに、新しいローカル変数を宣言して、それを返すか、単にそれをすぐに返す必要がありますここでの問題は、mainがクラスの中にあることです。distanceの機能の後ろに近いブレースを忘れてしまいました。あなたはクラスの説明を終わらせるためのセミコロンを持っていますが、あなたは合計で1つの閉じ括弧が少なすぎます。

2番目の問題は、distanceという名前の変数の中にdistanceという名前の変数を使用していることです。名前の衝突をしないでください、彼らは子猫を泣かせます。

第3の問題は、先ほど触れたdistance変数の型がintであることです。

別の一般的なアドバイスとして、コンパイラはコードがコンパイルされないときにエラーメッセージを表示します。それらを投稿すると便利です。

1

1)距離機能後のブレースを閉じます。
2)距離関数の実装が正しくありません。それは、ピタゴラスの定理を用いた距離見つける

double distance(MyPoint newPoint) 
{ 
    double distance; 
    distance=sqrt((x-newPoint.getX())*(x-newPoint.getX()) 
        +(y-newPoint.getY())*(y-newPoint.getY())); 
    return distance; 
} 

:あなたは本当にそれが2点間の距離をカルクしたい場合

、あなたのような何かを書く必要があります。
1)double型の可変距離の宣言。
2)ピタゴラス定理を用いて距離を計算する。
3)変数の戻り値。

関連する問題