Ich bin für neue Ideen immer dankbar ...
Wenn ich folgenden Code teste ...
Delphi-Quellcode:
TTest = record
case Typ:Boolean of
{$A-}
false: (T1 :Integer);
true: (T2 :Double);
{$A+}
end;
... dann erhalte ich tatsächlich gleiche Adressen für T1 und T2:
@Test.T1: $12F3D5
@Test.T2: $12F3D5
Diese Vorgehensweise macht prinzipiell Sinn, wenn man sich als Programmierer dem Problem unterschiedlicher Adressen für die varianten Teile des Records bewusst ist (zumindest muss ich nicht alle Records manuell nachrechnen). Nur jetzt muss man noch klären, ob C++ für die varianten Teile immer eine gerade (ausgerichtete) Adresse standardmäßig verlangt, denn wie unschwer zu erkennen, sind in meinem Beispiel die Adressen ungerade. Ich werde das auch nochmal klären ...