Forum: PC-Programmierung Verschiedene Structs in einem Array packen


von Franz (Gast)


Lesenswert?

Hi,
ich habe verschiedene strukturen.
AnalogOutput
DigitalOutput
PWMOutput

diese beinhalten unterschiedliche elemente.

Da aber alle in einem enum aufgelistet sind (nicht von mir, kann ich 
auch nicht ändern) würde ich gerne ein Array mit anzahl aller outputs 
(größe des enums) machen. Jetzt ist das Problem, dass die Inhalte der 
einzelnen elemente im Array unterschiedlich sein müssen. Das heiß, ich 
kann kein Array vom typ AnalogOutput machen, da sonst DigitalOutput und 
PWMOUtput nicht hineinpassen.

Gibt es eine möglichkeit, diese drei structs zusammenzuführen um es 
später beim Suchen einfacher zu haben?

Beim array habe ich mir gedacht, das Element im Enum ist gleichzeigit 
der Platz im array.

von A. S. (Gast)


Lesenswert?

Union

von Imonbln (Gast)


Lesenswert?

Verwirr uns nur nicht, indem Du uns unwichtige Details wie die 
Programmiersprache nennst. Es würde uns sicher nicht Helfen zu verstehen 
was Dein Problem ist.

Du hast ein Enum und 3 Strukturen, okay so weit verstanden. Die 
Strukturen sind unterschiedlich groß, das habe ich auch verstanden. Und 
dass Enum ist vorgeben, das ist auch angekommen, aber wie hängen jetzt 
Enum und Struktur zusammen?

Die Generische Antwort ist, Du musst die ein Memory Bereich besorgen der 
groß genug ist, die größte Struktur aufzunehmen und vielleicht auch noch 
etwas Header Overhead, dann kannst Du sicher diesen Speicher in die für 
Dich passende Struktur verwandeln. Die Details da zu sind abhängig von 
der Programmiersprache und den unwichtigen Zusammenhang zwischen enum 
und Strukturen, welche Du uns nicht genannt hast, vielleicht ist eine 
Union das, was Du suchst, oder ein serialisierer.

von Manfred S. (Firma: Manfred) (xfred343)


Lesenswert?

Wie wärs mit einem 2D-Array: die erste Dimension für die Elemente, die 
zweite für die Komponenten. Also alle Komponenten der jeweiligen 
Datentypen und ein weiteres Element, das angibt ob es sich um 
AnalogInput, DigitalInput etc. handelt, das ist zwar etwas redundant (so 
ähnlich wie man in einer Datenbank mehrere Parent-Client Beziehungen in 
eine einzige Tabelle packt). Zwischen Index der jeweiligen Enum und dem 
2. Arrayindex kannst du so eine Art "Matcher/Übersetzungfunktion" 
Enum-Index zu Array-Index bauen..

: Bearbeitet durch User
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.