title: C++ Why Is There "Unknown Type" When Class Header is Included?
body: <p>I have this header file and I'm trying to make variables of type <code>Item</code>. I've included <code>#include "Item.h"</code> and yet I still get a <code>unknown type name Item</code> error on both private variables when I compile.</p>
  
  <pre><code>#ifndef PLAYER_H
  #define PLAYER_H
  
  #include &lt;vector&gt;
  
  #include "Item.h"
  
  using std::vector;
  
  class Player
  { 
  
  public:
  
      // constructor
      Player( void );
  
      // destructor
      virtual ~Player( void );
  
  private:
  
      Item item;
      std::vector &lt;Item&gt; inventory;
  
  };
  
  #endif  /* PLAYER_H */
  </code></pre>
  
  <p>Whats up with this?</p>
  
  <p>Heres the <code>Item.h</code> that I'm including</p>
  
  <pre><code>#ifndef ITEM_H
  #define ITEM_H
  
  #include &lt;string&gt;
  #include "Player.h"
  #include "GlobalDefs.h"
  
  class Item {
  public:
      Item();
      Item(gold_t v, std::string n);
  
      virtual ~Item();
  
      // Getter
      inline virtual gold_t GetValue (void) 
      { 
          return value; 
      }
  
      // Getter
      inline virtual std::string GetName (void);
  
       // Getter
       virtual std::string GetItemText(void);
  
  protected:
      gold_t value;
      std::string name;
  
  };
  
  #endif  /* ITEM_H */
  </code></pre>