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...
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.
>Wie mache ich das?
Am besten gar nicht. Wenn doch, mit gecasteten Pointern.
Oliver
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.
> 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.