-2

我正在尝试创建一个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

也许我已经盯着 if 太久了,但任何帮助将不胜感激。

#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 声明后缺少分号。
  • 缺失点半径声明
  • 缺少“使用命名空间标准”
  • 构造函数的两个不同的函数接口(有和没有 const)
  • areaOfCircle 不能在 const 函数中修改

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

于 2013-07-07T23:32:25.580 回答
1

你声明你的构造函数采取

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

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

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

那是行不通的。

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

于 2013-07-07T23:34:02.170 回答