Forum: Compiler & IDEs Eine Variable, 2 Typen


von Wolfgang (Gast)


Lesenswert?

Hallo,

ich habe da ein Problem, habe bereits im Forum geschaut, mein Problem 
ähnelt diesem hier:
Beitrag "Kollision zweier Typendefinitionen vermeiden"
allerdings nicht genau, und dort scheint sich die Sache ausgeschwiegen 
zu haben.

Nun, mein Problem:

Angenommen ich habe eine Variable namens "var".
Diese Variable soll nun wahlweise vom Datentyp A und wahlweise von 
Datentyp B sein. Der Datentyp der Variable wird zur Laufzeit festgelegt.

Wie mache ich das?

Ich habe schon allerhand getüftelt aber ich komme nicht dahinter...

von P. S. (Gast)


Lesenswert?

union?

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?

1
ist sizeof("Datentyp A") gleich sizeof("Datentyp B")?
 Wenn ja, sollte eine union helfen. Man kann sich auch etwas mit 
typcasts, void-pointern, Konvertierungsfunktionen und/oder einer 
Universalstruktur a la "variant" aus VB u.ä. zusammenbasteln. 
Problembeschreibung ist zumindest mir aber zu grob, um einen brauchbaren 
Antwortversuch zu unternehmen.

von Oliver (Gast)


Lesenswert?

>Wie mache ich das?

Am besten gar nicht. Wenn doch, mit gecasteten Pointern.

Oliver

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Oliver wrote:
>>Wie mache ich das?
>
> Am besten gar nicht. Wenn doch, mit gecasteten Pointern.

Nein, wie andere schon schrieben: mit einer union.  Der Weg ist vom
C-Standard gedeckt.  Bei Zeigern ist nur die Umwandelbarkeit eines
Objektzeigers in einen void * und zurück in den Objektzeiger vom
Standard gedeckt.

von Karl H. (kbuchegg)


Lesenswert?

> Nein, wie andere schon schrieben: mit einer union.

Ich kann jetzt falsch liegen. Aber mein Gefühl sagt mir, dass der TO den 
falschen Baum anpinkelt und jetzt Symptome kurieren will anstatt das 
eigentliche Problem zu lösen. Weiß nicht warum, ist nur so ein Gefühl

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Karl heinz Buchegger wrote:

> Ich kann jetzt falsch liegen. Aber mein Gefühl sagt mir, dass der TO den
> falschen Baum anpinkelt und jetzt Symptome kurieren will anstatt das
> eigentliche Problem zu lösen.

Kurz vor dem Kaputtgehen hat meine Glaskugel ähnliches gemurmelt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.