title: C++ why is my class still abstract?
body: <p>I'm sure its something simple on my part, but I can't figure out why my compiler thinks one of my classes is abstract. Here's the situation:</p>
  
  <p>I have an abstract base class like so:</p>
  
  <pre><code>class AnimatedDraw
  {
  public:
      virtual void Draw(sf::RenderWindow &amp;window) = 0;
      virtual void Draw(sf::RenderWindow &amp;window, sf::Shader shader) = 0;
      virtual void Update(sf::Clock &amp;time) = 0;
  };
  </code></pre>
  
  <p>And I inherit from it as so:</p>
  
  <pre><code>class ScreenLayer : public AnimatedDraw
  {
  public:
      ScreenLayer(void);
  
      virtual void Draw(sf::RenderWindow &amp;window);
  
      virtual void Draw(sf::RenderWindow &amp;window, sf::Shader &amp;shader);
  
      virtual void Update(sf::Clock &amp;clock);
  
      ~ScreenLayer(void);
  };
  </code></pre>
  
  <p>for reference, the ScreenLayer.cpp file is as follows:</p>
  
  <pre><code>#include "ScreenLayer.h"
  ScreenLayer::ScreenLayer(void)
  {
  }
  void ScreenLayer::Draw(sf::RenderWindow &amp;window)
  {
  }
  void ScreenLayer::Draw(sf::RenderWindow &amp;window, sf::Shader &amp;shader)
  {
  }
  void ScreenLayer::Update(sf::Clock &amp;clock)
  {
  }
  ScreenLayer::~ScreenLayer(void)
  {
  }
  </code></pre>
  
  <p>However, when I try to use my derived class (i.e. <code>AnimatedDraw *testDrawer = new ScreenLayer;</code> ) my compiler complains the ScreenLayer is abstract. Changing AnimatedDraw to ScreenLayer was also invalid for the same reason. I overwrote all the abstract function on my base class didn't I? I'm not sure why it's being seen as abstract. Any help would be appreciated</p>
  
  <p>Thanks</p>