-Ivan-
27-12-2014, 15:35
Ho bisogno di un chiarimento su un uso degli enumeratori che mi è capitato di incontrare un paio di volte ma non mi è chiaro.
enum EContext
{
ESingleplayer,
EMultiplayer,
EOutpost,
....
}
L'enumerator viene utilizzato all'interno di una funzione in questo modo:
void SomeClass::Update(int32 context)
{
if ( context & (1<<(int32)m_currentContext) )
{
... do stuff
}
}
m_currentContext è un membro di SomeClass di tipo EContext.
Il parametro context della funzione è passato come shift di 1 quando la funzione viene chiamata (questo uso è piuttosto scomodo, una alternativa migliore è che il valore corretto sia assegnato direttamente nella dichiarazione dell'enum così da non dover eseguire lo shift ogni volta che si chiama la funzione ma il concetto comunuqe è lo stesso):
Update(1<<(int32)EOutpost);
Spero di ricordare bene perchè non ho il codice sotto mano.
Mi sapete dire in quali casi ed a quale scopo sia utile utilizzare questo tipo di soluzione?
enum EContext
{
ESingleplayer,
EMultiplayer,
EOutpost,
....
}
L'enumerator viene utilizzato all'interno di una funzione in questo modo:
void SomeClass::Update(int32 context)
{
if ( context & (1<<(int32)m_currentContext) )
{
... do stuff
}
}
m_currentContext è un membro di SomeClass di tipo EContext.
Il parametro context della funzione è passato come shift di 1 quando la funzione viene chiamata (questo uso è piuttosto scomodo, una alternativa migliore è che il valore corretto sia assegnato direttamente nella dichiarazione dell'enum così da non dover eseguire lo shift ogni volta che si chiama la funzione ma il concetto comunuqe è lo stesso):
Update(1<<(int32)EOutpost);
Spero di ricordare bene perchè non ho il codice sotto mano.
Mi sapete dire in quali casi ed a quale scopo sia utile utilizzare questo tipo di soluzione?