Eine Variable, 2 Typen

Gast #1215912
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...
Moderator Persönliche Seite
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.
Moderator Persönliche Seite
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.