title: Why am I getting so many errors, why is it telling me window is undefined? wont compile
body: <p>So I am making a game trying to use OOP but visual studio isn't happy I am using VC++ 2010 express as my IDE, I decided to "Objectify" SDL into reusable components but now I went from 0 errors to 122 and some of them really aren't errors like when it says window is not defined and i click to go to the error the error disappears... so I am having a bit of trouble</p>
  
  <pre><code>#ifndef GUARD_WINDOWSTATE_H
  #define GUARD_WINDOWSTATE_H
  
  #include&lt;SDL.h&gt;
  #include"Window.h"
  #include"Graphics.h"
  
  /* 
  WindowSate is a component to a window class, a windowstate is a seperate
  frame of a window, it could be a menu or a level or something
  a windowstate handles its events through a window and draws via graphics buffer to
  the window's surface it will hold the components of the window(graphics, GUI     components, etc.)
  and the window will hold it
  */
  
  class WindowState {
  public:
  
  WindowState(Window* window) 
      :m_window(window)
  {
      m_window-&gt;add_state(this);
  }
  
  virtual void load() = 0;
  
  virtual void update( SDL_Event* e) = 0;
  virtual void logic() = 0;
  virtual void render(Graphics g) = 0;
  
  virtual void unload() = 0;
  
  protected:
  
  Window* m_window;
  
  };
  
  #endif
  </code></pre>
  
  <p>it tells me that window is undefined when it is defined in window.h which is included
  here is window.h:</p>
  
  <pre><code>#ifndef GUARD_WINDOW_H
  #define GUARD_WINDOW_H
  
  #include"SDL.h"
  #include&lt;vector&gt;
  #include&lt;string&gt;
  #include"WindowState.h"
  #include"Graphics.h"
  /*The window class is the interface to the user,
  it displays everything and is the top layer of the interactive application
  it recieves events and passes them down the chain to states and components
  it holds states and enumerates through them
  */
  
  class Window {
  private:
  
  //width and height of the window
  int m_width, m_height;
  
  //graphics handler of the window
  Graphics m_g;
  
  //window surface
  SDL_Surface* m_surface;
  
  //event to hold all events
  SDL_Event m_events;
  
  //current and qeued states
  int m_current_state;
  int m_queued_state;
  
  //Current WindowState
  WindowState* m_window_state;
  
  //is the window open?
  bool m_running;
  
  //title of the window
  std::string m_title;
  
  //vector to hold all the window states
  std::vector&lt;WindowState*&gt; m_states;
  
  public:
  //Basic constructor
  Window(int width, int height);
  //constructor with title
  Window(int width, int height, std::string title);
  
  //returns the windows events
  virtual SDL_Event&amp; get_events() { return m_events; }
  
  SDL_Surface* surface() { return m_surface; }
  
  bool is_running() { return m_running; }
  
  virtual void run(); //starts the window
  
  virtual void update();    //updates the events 
  
  virtual void update_state();    //checks for a change in state
  
  virtual void draw();    //draws current state
  
  virtual void close(); // closes the window
  
  void queue_window_state(int state);    //sets up a window state to be activated
  
  void add_state(WindowState* state);    //adds a state to the window
  
  void set_caption(std::string caption);
  //destructor
  ~Window();
  };
  
  #endif
  </code></pre>