title: Why does the compiler think this class is abstract (C++)?
body: <p>I'm writing something to illustrate the command pattern.  I've recognized that, for this calculator implementation, all binary operations (addition, subtraction, etc.) simply 'Execute' an operation on the top two stack items, so I've tried to pull that logic into another base class (BinaryCommand).</p>
  
  <p>I'm confused as to why I'm getting the error (shown as a comment on the main function below).  Any help is greatly appreciated!</p>
  
  <pre><code>class ExpressionCommand
  {
  public:
      ExpressionCommand(void);
      ~ExpressionCommand(void);
  
      virtual bool Execute (Stack&lt;int&gt; &amp; stack) = 0;
  };
  
  
  class BinaryCommand : ExpressionCommand
  {
  public:
      BinaryCommand(void);
      ~BinaryCommand(void);
  
      virtual int Evaluate (int n1, int n2) const = 0;
  
      bool Execute (Stack&lt;int&gt; &amp; stack);
  };
  bool BinaryCommand::Execute (Stack &lt;int&gt; &amp; s) 
  {
      int n1 = s.pop();
      int n2 = s.pop();
      int result = this-&gt;Evaluate (n1, n2);
      s.push (result);
      return true;
  }
  
  class AdditionCommand : public BinaryCommand
  {
  public:
      AdditionCommand(void);
      ~AdditionCommand(void);
  
      int Evaluate (int n1, int n2);
  };
  int AdditionCommand::Evaluate (int n1, int n2)
  {
      return n1 + n2;
  }
  
  
  int main()
  {
      AdditionCommand * command = new AdditionCommand(); // 'AdditionCommand' : cannot instantiate abstract class
  }
  </code></pre>