title: "Expression must have class type" when calling simple inherited method
body: <p>Do you guys have any hint what's wrong with my code? I've made it as simple as possible and tried to search all over google but still have no idea.  </p>
  
  <pre><code>#include "stdafx.h"
  #include &lt;iostream&gt;
  #include &lt;string&gt;
  
  using namespace std;
  
  class Animal {
  public:
      Animal();
      Animal(string _sound) :
          sound(_sound) {}
      virtual ~Animal();
      void give_sound() {
          cout &lt;&lt; sound &lt;&lt; " ";
      }
  protected:
      string sound;
  };
  
  class Dog : protected Animal {
  public:
      Dog(): Animal("woof") {}
  };
  
  int main() {
  
      Dog doggy();
      doggy.give_sound(); // expression must have class type
  
      return 0;
  }    
  </code></pre>