C++ error: object of abstract class type ist nicht erlaubt: rein virtuelle Funktion hat keine overrider

Probleme mit der Vererbung. Ich habe keine Ahnung, was ich falsch mache.

FigureGeometry.h

    #ifndef FIGUREGEOMETRY
#define FIGUREGEOMETRY

static const float PI = 3.14159f;

class FigureGeometry
{

public:
    virtual float getArea() const = 0;
    virtual float getPerimeter() const = 0;
};

#endif

Kreis.h

    #ifndef CIRCLE
#define CIRCLE

#include "FigureGeometry.h"

class Circle:public FigureGeometry
{
    float radius;
public:
    Circle(float theRadius)
    {
        radius = theRadius;
    }
    float getRadius() {return radius;}
    float getArea() {return getRadius() * getRadius() * PI;}
    float getPerimeter() {return getRadius() * 2 * PI;}
};

#endif

und dann in main.cpp auf die Zeile mit "Circle c1(5);" bekomme ich die Fehlermeldung:

21  IntelliSense: object of abstract class type "Circle" is not allowed:
            pure virtual function "FigureGeometry::getArea" has no overrider
            pure virtual function "FigureGeometry::getPerimeter" has no overrider   c:\Users\moog\Documents\Visual Studio 2012\Projects\data structures 3\data structures 3\main.cpp    9   9   data structures 3
  • getArea() und getArea() const sind zwei verschiedene Funktionen.
InformationsquelleAutor Bacu | 2014-11-09
Schreibe einen Kommentar