-2

Circle円の面積を計算するクラスを作成しようとしています。2 つのポイントを初期化する基本的な Point クラスを使用します。1 つは円 (別名半径) 上のポイントとしての中心であり、これらは私が取得しているエラーです:

(25) error C2533: 'Circle::{ctor}' : constructors not allowed a return type
(25) error C2511: 'Circle::Circle(Point &,Point &)' : overloaded member function not found in 'Circle'
(12) : see declaration of 'Circle'
(46): fatal error C1004: unexpected end-of-file found

あまりにも長い間見つめていたのかもしれませんが、何か助けていただければ幸いです。

#include <iostream>
#include <cmath>
#include "Point.h"

class Circle
{
   public:
  Circle(const Point &, const Point &);
  float getArea() const;

   private:
  Point pCenter;
  Point p1;
  float areaOfCircle;
}

Circle::Circle(Point &pointC, Point &point1)
: pCenter(pointC), p1(point1)
{

}

float Circle::getArea() const
{
areaOfCircle = 3.14159 * pow(pCenter.distanceTo(p1),2);
return areaOfCircle;
}

int main()
{
Point pointCenter

cout << "The center point is at: " //pointCenter.getX() << ","  
    << pointCenter.getY() << endl;
cout << "A point on the circle is at: " //pointRadius.getX() << "," 
    << pointRadius.getY() << endl;

    cin.ignore(2);
}
4

2 に答える 2

6

このコードにはいくつかの問題があります。

  • クラス宣言の後にセミコロンがありません。
  • pointCenter 宣言の後にセミコロンがありません。
  • pointRadius 宣言がありません
  • 「名前空間 std の使用」がありません
  • コンストラクター用の 2 つの異なる関数インターフェイス (const ありとなし)
  • const 関数で areaOfCircle を変更することはできません

上記の問題を修正すると、コードがコンパイルされます (ただし、その後に解決すべきことがさらにあります)。

于 2013-07-07T23:32:25.580 に答える
1

コンストラクターを宣言しました

class Circle {
    ...
    Circle(Point const&, Point const&);
    ...
};

constしかし、非参照を取るように定義しました:

Circle::Circle(Point&, Point&) {
     ...
}

それはうまくいきません。

ところで、値の二乗を計算したい場合は、!を使用するx * xよりもはるかに優れています。std::exp(x, 2)後者の関数はかなり複雑で、一般的にそれほど高速ではありません。

于 2013-07-07T23:34:02.170 に答える