2012-06-14 12 views
8

I sindacati dispongono di una struttura di controllo per verificare quale membro è attualmente in uso (o se ne ha uno affatto)? Lo sto chiedendo perché un comportamento indefinito non è mai una buona cosa da avere nel tuo programma.Unione testata per l'attuale membro in uso

risposta

12

No, nessun meccanismo di questo tipo è disponibile immediatamente. Dovrai prenderti cura di te stesso. L'approccio comune è avvolgente il union in un struct:

struct MyUnion 
{ 
    int whichMember; 
    union { 
     //whatever 
    } actualUnion; 
}; 

in modo da avere MyUnion x; e x.whichMember ti dice quale campo di x.actualUnion è in uso (è necessario implementare la funzionalità però).

+3

+1: questo tipo di struttura viene spesso definito "unione discriminata" o "unione contrassegnata". –

+0

Sì, ho pensato ad un approccio simile, ma poiché preferisco i costrutti linguistici a quelli fatti da sé, dovevo solo sapere se ne esisteva uno. Grazie per la risposta rapida. –