Salve ragazzi io ho i seguenti due file header
State.h e StateManager.h
State.h:
StateManager.hcodice:class State { public: //StateManager manager; virtual void init()=0; virtual void update()=0; virtual void destroy()=0; };
codice:class StateManager { public: StateManager(); template <class T> State changeState(); void update(); private: State currentState; };
Non capisco come mai se in State manager dichiaro "State *currentState"(con *) non da errrore mentre se ometto * da errore
Inoltre se notate io necessito che nella classe State ho un attributo di tipo StateManager(quindi dipendo dal file StateManager.h) e nella classe StateManager di un attributo State(quindi dipendo da State.h) , come posso risolvere questa dipendenza?codice:1>------ Inizio compilazione: Progetto: SuperMarioBros, Configurazione: Debug Win32 ------ 1> Menu.cpp 1>c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\statemanager.h(12): error C2259: 'State': impossibile creare un'istanza di classe astratta 1> a causa dei seguenti membri: 1> 'void State::init(void)': è astratta 1> c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\state.h(7): vedere la dichiarazione di 'State::init' 1> 'void State::update(void)': è astratta 1> c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\state.h(8): vedere la dichiarazione di 'State::update' 1> 'void State::destroy(void)': è astratta 1> c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\state.h(9): vedere la dichiarazione di 'State::destroy' 1> Generazione del codice in corso... 1> Compilazione in corso... 1> StateManager.cpp 1>c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\statemanager.h(12): error C2259: 'State': impossibile creare un'istanza di classe astratta 1> a causa dei seguenti membri: 1> 'void State::init(void)': è astratta 1> c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\state.h(7): vedere la dichiarazione di 'State::init' 1> 'void State::update(void)': è astratta 1> c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\state.h(8): vedere la dichiarazione di 'State::update' 1> 'void State::destroy(void)': è astratta 1> c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\state.h(9): vedere la dichiarazione di 'State::destroy' 1> Generazione del codice in corso... 1> Compilazione in corso... 1> main.cpp 1>c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\statemanager.h(12): error C2259: 'State': impossibile creare un'istanza di classe astratta 1> a causa dei seguenti membri: 1> 'void State::init(void)': è astratta 1> c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\state.h(7): vedere la dichiarazione di 'State::init' 1> 'void State::update(void)': è astratta 1> c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\state.h(8): vedere la dichiarazione di 'State::update' 1> 'void State::destroy(void)': è astratta 1> c:\users\gaten\documents\visual studio 2013\projects\supermariobros\supermariobros\state.h(9): vedere la dichiarazione di 'State::destroy' 1> Generazione del codice in corso... ========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========

Rispondi quotando