title: "Expected Class name" Error for Inheritance
body: <h2>Problem</h2>
  
  <p>Currently designing a GUI game, and I've finished the basic OOP aspects of the game(along with 90% of all non-abstract classes). However, I tried extending a class called Protester to this class which caused the error at line 5 here:</p>
  
  
  
  <pre><code>#ifndef HardcoreProtester_h
  #define HardcoreProtester_h
  #include "Protester.h"
  
  class HardcoreProtester : public Protester{
  public:
      HardcoreProtester(StudentWorld* w, int x, int y) : Protester(w, x, y, IID_HARD_CORE_PROTESTER, 20){};
  private:
  };
  
  #endif /* HardcoreProtester_h */
  </code></pre>
  
  
  
  <p>when extending from this </p>
  
  
  
  <pre><code>#ifndef Protester_h
  #define Protester_h
  #include "Actor.h"
  #include "StudentWorld.h"
  
  class Protester : public Human{
  static const int INIT_PERP_TICK = 200;
  static const int DAMAGE = 20;
  static const int SHOUT_WAIT = 25;
  static const int MIN_STEP = 8;
  static const int MAX_STEP = 60;
  static const int EXIT_X = 60;
  static const int EXIT_Y = 60;
  public:
      static const int INIT_HITPOINTS = 5;
      Protester(StudentWorld* w, int startX, int startY, int ID, int hp);
      virtual ~Protester();
      virtual void doSomething();
      Direction pickRandomDirection();
      virtual bool changeState(Direction dir);
      virtual bool isDead() const{
          return Human::isDead() &amp;&amp; getX() == 60 &amp;&amp; getY() == 60;
      }
      virtual bool isDeadState() const{
          return Human::isDead();
      }
      virtual void consume();
      virtual void setDead();
      virtual bool moveDelta(StudentWorld* world, Direction dir, int&amp; xdir, int&amp; ydir, int steps = 1);
      int determineRandomSteps();
      bool canTurn(Actor::Direction dir);
      Actor::Direction randTurn(Actor::Direction dir);
      Actor::Direction oppositeDir(Actor::Direction dir);
      Actor::Direction numToDir(int num);
  
  private:
      int step;
      int restTick;
      int shoutTick;
      int perpTick;
  };
  #endif /* Protester_h */
  </code></pre>
  
  
  
  <p>I've looked on stack overflow for answers to why the error persists, and I've tried to break a nonexistent circular dependency (as you can see Protester does not even include HardcoreProtester). I tried to break any circular dependency by adding a</p>
  
  <pre><code>class Protester;
  </code></pre>
  
  <p>above the definition of HardcoreProtester.
  However, this gives me the error:</p>
  
  <pre><code>Type 'Protester' is not a direct or virtual base of 'HardcoreProtester'
  </code></pre>
  
  <p>and</p>
  
  <pre><code>Base class has incomplete type
  </code></pre>
  
  <p>I also made sure the base class is not abstract(I was able to initialize it without any errors). </p>
  
  <p>If this isn't enough information, here's the github for the project: 
  <a href="https://github.com/OneRaynyDay/FrackMan" rel="nofollow noreferrer">https://github.com/OneRaynyDay/FrackMan</a></p>
  
  <p>I apologize for any ambiguity in my question - I just simply have no idea where the error could be(hence an attempt for MCVE with github link). Thanks in advance!</p>
  
  <p>EDIT: Also, using XCode to make this project. By this point into debugging I'm starting to suspect XCode of being the culprit.</p>
  
  <p>In addition, just to be extra helpful and verifiable, here's a picture of the error diagnosis from XCode:
  <a href="https://i.stack.imgur.com/9PdWd.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9PdWd.png" alt="enter image description here"></a></p>