需要有关getArea()函数的帮助

Toi*_*ila -3 c++

我试图通过使用现有数据(半径,宽度和高度)来计算圆和矩形的面积.但我有一些错误,我希望你能帮助我解决它.

#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Shape
{
public:
    virtual void Draw () = 0;
    virtual void MoveTo (int newx, int newy) = 0;
    virtual int GetArea()const = 0;
};

class Rectangle : public Shape
{
public:
    Rectangle (int x, int y, int w, int h);
    virtual void Draw ();
    virtual void MoveTo (int newx, int newy);
    int GetArea() {return height * width;}

private:
    int x, y;
    int width;
    int height;
};

void Rectangle::Draw ()
{
    cout << "Drawing a Rectangle at (" << x << "," << y
     << "), width " << width << ", height " << height << "\n";
};

void Rectangle::MoveTo (int newx, int newy)
{
    x = newx;
    y = newy;
}
Rectangle::Rectangle (int initx, int inity, int initw, int inith)
{
    x = initx;
    y = inity;
    width = initw;
    height = inith;
}

class Circle : public Shape
{
public:
    Circle (int initx, int inity, int initr);
    virtual void Draw ();
    virtual void MoveTo (int newx, int newy);
    int GetArea() {return 3.14 * radius * radius;}

private:
    int x, y;
    int radius;
};

void Circle::Draw ()
{
    cout << "Drawing a Circle at (" << x << "," << y
     << "), radius " << radius <<"\n";
}

void Circle::MoveTo (int newx, int newy)
{
    x = newx;
    y = newy;
}

Circle::Circle (int initx, int inity, int initr)
{
    x = initx;
    y = inity;
    radius = initr;
}
int main ()
{
    Shape * shapes[2];
    shapes[0] = new Rectangle (10, 20, 5, 6);
    shapes[1] = new Circle (15, 25, 8);

    for (int i=0; i<2; ++i) {
    shapes[i]->Draw();
    shapes[i]->GetArea();
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Căt*_*tiș 7

Rectangle :: GetArea方法应该是const.你声明它是非const的,所以它不被认为是Shape :: GetArea的重写,所以Rectangle被认为是抽象的.