2012-06-14 10 views
8

¿Las uniones tienen una estructura de control para probar qué miembro está actualmente en uso (o si tiene alguno)? Estoy preguntando esto porque nunca es bueno tener un comportamiento indefinido en tu programa.Unión probada para miembro actual en uso

Respuesta

12

No, tal mecanismo no existe en el mercado. Tendrá que encargarse de eso usted mismo. El enfoque habitual es envolver el union en un struct:

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

Así que tiene MyUnion x; y x.whichMember le indica qué campo de la x.actualUnion está en uso (hay que implementar la funcionalidad sin embargo).

+3

+1: Este tipo de estructura a menudo se denomina "unión discriminada" o "unión etiquetada". –

+0

Sí, pensé en un enfoque similar, pero como prefiero las construcciones idiomáticas a las creadas por uno mismo, solo tenía que saber si existía alguna. Gracias por la rápida respuesta. –

Cuestiones relacionadas