title: C++ abstract class without pure virtual functions?
body: <p>I have a base class</p>
  
  <pre><code>class ShapeF
  {
  public:
      ShapeF();
      virtual ~ShapeF();
  
      inline void SetPosition(const Vector2&amp; inPosition) { mPosition.Set(inPosition); }
  
  protected:
      Vector2 mPosition;
  }
  </code></pre>
  
  <p>Obviously with some ommitied code, but you get the point.
  I use this as a template, and with some fun (ommited) enums, a way to determine what kind of shape i'm using</p>
  
  <pre><code>class RotatedRectangleF : public ShapeF
  {
  public:
      RotatedRectangleF();
      virtual ~RotatedRectangleF();
  protected:
      float mWidth;
      float mHeight;
      float mRotation;
  }
  </code></pre>
  
  <p>ShapeF does its job with the positioning, and an enum that defines what the type is.
  It has accessors and mutators, but no methods.</p>
  
  <p>Can I make ShapeF an abstract class, to ensure nobody tries and instantiate an object of type ShapeF?</p>
  
  <p>Normally, this is doable by having a pure virtual function within ShapeF</p>
  
  <pre><code>//ShapeF.h
  virtual void Collides(const ShapeF&amp; inShape) = 0;
  </code></pre>
  
  <p>However, I am currently dealing with collisions in a seperate class.
  I can move everything over, but i'm wondering if there is a way to make a class abstract.. without the pure virtual functions.</p>