使用C ++中的Point类创建一个计算圆的面积的类

时间:2013-07-07 23:28:44

标签: c++ visual-c++

我正在尝试创建一个计算圆的面积的类Circle。它使用一个基本的Point类来初始化2个点,一个作为中心点,作为圆上的一个点(又称半径),这些是我得到的错误:

(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);
}

2 个答案:

答案 0 :(得分:6)

此代码存在许多问题:

  • 您在课程声明后缺少分号。
  • 在pointCenter声明后缺少分号。
  • 缺少pointRadius声明
  • 缺少“使用命名空间std”
  • 构造函数的两个不同的函数接口(有和没有const)
  • areaOfCircle不能在const函数中修改

修复上述问题将使代码编译(但之后还有更多要解决的问题)。

答案 1 :(得分:1)

您声明了构造函数

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

但您将其定义为采用非const引用:

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

那不行。

顺便说一句,如果你想计算一个值的平方,那么使用x * x比使用std::exp(x, 2)要好得多!后一种功能相当复杂,通常不那么快。