title: C++ error: object of abstract class type is not allowed: pure virtual function has no overrider
body: <p>Having trouble with inheritance. I have no idea what I'm doing wrong.</p>
  
  <p><strong>FigureGeometry.h</strong></p>
  
  <pre><code>    #ifndef FIGUREGEOMETRY
  #define FIGUREGEOMETRY
  
  static const float PI = 3.14159f;
  
  class FigureGeometry
  {
  
  public:
      virtual float getArea() const = 0;
      virtual float getPerimeter() const = 0;
  };
  
  #endif
  </code></pre>
  
  <p><strong>Circle.h</strong></p>
  
  <pre><code>    #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
  </code></pre>
  
  <p>and then in main.cpp, on the line containing <code>"Circle c1(5);"</code> I get the error:</p>
  
  <pre><code>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
  </code></pre>