2012-06-14 4 views

Antwort

12

Nein, ein solcher Mechanismus existiert nicht von der Stange. Sie müssen sich selbst darum kümmern. Die übliche Vorgehensweise ist das Einwickeln der union in einem struct:

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

So haben Sie MyUnion x; und x.whichMember sagen Sie, welches Feld x.actualUnion in Gebrauch ist (Sie können die Funktionalität implementieren obwohl).

+3

+1: Diese Art von Struktur wird oft entweder eine "diskriminierte Union" oder eine "markierte Union" genannt. –

+0

Ja, ich dachte über einen ähnlichen Ansatz nach, aber weil ich Sprachkonstrukte den selbstgebauten vorziehe, musste ich nur wissen, ob es einen gab. Danke für die schnelle Antwort. –