title: Base class has incomplete type error
body: <blockquote>
    <p>Base class has incomplete type</p>
  </blockquote>
  
  <p>What exactly does this error mean and how can I fix it? I have tried forward declaring the class by doing <code>class Entity</code> in my EntityPhysics header but it did not work.</p>
  
  <p>Here is my Entity.h</p>
  
  <pre><code>#ifndef __Game__Entity__
  #define __Game__Entity__
  
  #include &lt;iostream&gt;
  #include &lt;string&gt;
  
  #include "OGRE/Ogre.h"
  
  #include "OgreInit.h"
  
  class Entity{
  public:
      Entity(std::string entityId, std::string mesh, Ogre::Vector3 position = Ogre::Vector3::ZERO, Ogre::Vector3 rotation = Ogre::Vector3::ZERO);
      virtual ~Entity() = 0;
  
      void setPosition(Ogre::Vector3 position);
      Ogre::Vector3 getPosition();
      void setRotation(Ogre::Vector3 rotationIncrease);
      Ogre::Vector3 getRotation();
      void setMesh(std::string meshName);
      std::string getMesh();
      virtual void tick() = 0;
      void removeEntity();
  
      Ogre::Entity getEntity();
      Ogre::SceneNode getSceneNode();
  
      std::string entityId;
  protected:
      Ogre::Entity *ent;
      Ogre::SceneNode *nod;
  };
  
  #endif /* defined(__Game__Entity__) */
  </code></pre>
  
  <p>And my EntityPhysics.h</p>
  
  <pre><code>#ifndef __Game__EntityPhysics__
  #define __Game__EntityPhysics__
  
  #include &lt;iostream&gt;
  #include &lt;string&gt;
  #include "OGRE/Ogre.h"
  #include "OgreBulletCollisionsBoxShape.h"
  #include "OgreBulletDynamicsRigidBody.h"
  
  #include "Entity.h"
  #include "OgreInit.h"
  
  class EntityPhysics: public Entity //error occurs here: "Base class has incomplete type"
  {
  public:
      EntityPhysics(std::string pentityId, std::string mesh, Ogre::Vector3 position, Ogre::Vector3 rotation, /*Physics Specific "stuff"*/std::string shapeForm = "BoxShape", float friction = 1.0, float restitution = 0.0, float mass = 1.0);
      virtual ~EntityPhysics() = 0;
      virtual void tick() = 0;
  private:
      float friction, restitution, mass;
  
      OgreBulletCollisions::CollisionShape *collisionShape;
      OgreBulletDynamics::RigidBody *rigidBody;
  };
  
  #endif /* defined(__Game__EntityPhysics__) */
  </code></pre>
  
  <p>I think it may have to do with me including <code>Entity.h</code> in the child class, but if I do that I get the same error.</p>