oregon, grazie per la risposta. Volevo approfittare per domandare questa cosa.
Come mai se nella classe State dichiaro manager come puntatore di tipo StateManager non da errore mentre se lo dichiaro semplicemente come "StateManager manager" da errore?? precisamente mi dice:

error C2079: 'State::manager' utilizza class 'StateManager' non definito

eppure in alto alla class faccio una forward decleration(ps. purtroppo non posso includere il file "StateManager.h" dato che c'è dipendenza tra le due classi.