Herakles
Profifragensteller
Moin!
Ich habe ein struct, in dem zwei verschiedene nested structs stecken können. Voll ausgefüllt könnte das struct in zwei Varianten auftreten:
1.
2.
Es gäbe also einmal ein nested struct, dass vom Typ "struct super" ist, und einmal vom Typ "struct klasse". Alle anderen Daten im "struct toll" bleiben aber identisch. Ich möchte beide Typen zur Verfügung haben.
Nun könnte man natürlich sagen "mach einfach zwei verschiedene structs, eins heißt "toll_1" und eins "toll_2" - aber eben genau das möchte ich nicht, ich möchte vielmehr wissen, ob es eine Möglichkeit gibt, den Teil des nested struct variabel zu halten.
Mach ich sowas vielleicht mit einem Pointer:
Allerdings könnte ich dann bei "sizeof()"-Abfragen immer ins Leere greifen oder müsste das entsprechende nested struct immer mühsam hinzuaddieren.
Wie also macht man's elegant? Ist die Lösung tatsächlich, zwei Strukturen anzulegen oder gibt es eine Lösung ohne Codedopplung?
Viele Grüße
Herakles
Ich habe ein struct, in dem zwei verschiedene nested structs stecken können. Voll ausgefüllt könnte das struct in zwei Varianten auftreten:
1.
Code:
struct toll {
int a;
struct super z;
int b;
}
2.
Code:
struct toll {
int a;
struct klasse y;
int b;
}
Es gäbe also einmal ein nested struct, dass vom Typ "struct super" ist, und einmal vom Typ "struct klasse". Alle anderen Daten im "struct toll" bleiben aber identisch. Ich möchte beide Typen zur Verfügung haben.
Nun könnte man natürlich sagen "mach einfach zwei verschiedene structs, eins heißt "toll_1" und eins "toll_2" - aber eben genau das möchte ich nicht, ich möchte vielmehr wissen, ob es eine Möglichkeit gibt, den Teil des nested struct variabel zu halten.
Mach ich sowas vielleicht mit einem Pointer:
Code:
struct toll {
int a;
void *x;
int b;
}
Allerdings könnte ich dann bei "sizeof()"-Abfragen immer ins Leere greifen oder müsste das entsprechende nested struct immer mühsam hinzuaddieren.
Wie also macht man's elegant? Ist die Lösung tatsächlich, zwei Strukturen anzulegen oder gibt es eine Lösung ohne Codedopplung?
Viele Grüße
Herakles
Zuletzt bearbeitet: