Ciao ... Se ho capito bene il tuo problema, potresti fare una cosa del genere:
codice:
struct ConstantData
{
ConstantData( int inHP, int inMP, int speed ) : initialHP(inHP), initialMP(inMP), speed(speed) {}
// Qui tutte le costanti condivise
const int initialHP;
const int initialMP;
const int speed;
};
class Unit
{
// Qui tutte le variabili condivise
int m_currHP;
int m_currMP;
protected:
// Il costruttore deve inizializzare le variabili secondo i valori delle costanti
Unit( const ConstantData& init ) : currHP(init.m_initialHP), currMP(init.m_initialMP) {}
virtual ~Base() {}
};
class Lion : public Unit
{
static ConstantData initialData;
public:
Lion( ) : Unit( initialData ) {}
};
class Snake : public Unit
{
static ConstData initialData;
Snake( ) : Unit( initialData ) {}
};
Quindi l' inizializzazione delle varie costanti condivise:
codice:
ConstantData Lion::initialData( 200,150,20 );
ConstantData Snake::initialData( 100,50,13 );