Salve ragazzi io ho i seguenti due file header
State.h e StateManager.h
State.h:
codice:
class State {
public:
//StateManager manager;
virtual void init()=0;
virtual void update()=0;
virtual void destroy()=0;
};
StateManager.h
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
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 ==========
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?