Dürfen in einer Union mehrere Variablen gleich heißen?
-
Würde an sich ja nichts dagegen sprechen, bezeichnet eh den selben Speicherbereich.
union test { int i; double i; };Zulässig? Der MS-Compiler beschwert sich auf jeden Fall nicht.
-
mein ms meckert
error C2020: 'i' : 'union' member redefinition
-
Woher soll der Compiler da wissen, ob Du den double i oder den int i willst?
-
die einzelnen elemente einer union bezeichnen zwar denselben speicherbereich, aber die objekte (das objekt), die dahinter liegen, haben jeweils einen typen.
eine union ist nicht dafür da, den speicher umzuinterpretieren (dafür gibt es reinterpret_cast), sie ist einfach ein mittel, weniger speicher zu verwenden: unter der voraussetzung, dass immer nur ein objekt benötigt wird.
andersrum gesagt kannst du (solltest du) immer nur ein element aus der union verwenden, und damit du weißt, welches, müssen sie eben verschiedene namen haben.von daher ist deine frage ein bisschen unsinnig.