structs/unions initialisieren
-
hi,
gibt es eine Möglichkeit unions, die weitere Strukturen enthalten "statisch" zu initialisieren. z.B.:
union foo { struct { unsigned int muh; }bar1; struct { unsigned int kuh; }bar2; }Mit statisch initialisieren mein ich:
foo foobar = {/*blablabla*/};danke
-
In C++ verwendet man normalerweise Konstruktoren um Objekte zu initialisieren.
-
Ich weiß net was ihr mit eueren unitons habt ich brauch die (in c++ zumindest) nie...
Afaik geht das nicht.
-
Du kannst nur eine Funktion schreiben:
bool InitMyStrct (MyStrct *pMyStruct) { // ... }und diese aufrufen, nur dann baue lieber eine Klasse und benutze den Construtor.
-
Danke für eure Antworten.
Mir ist durchaus bewusst, dass man das in C++ mit Klassen, Ableitung, etc. besser lösen könnte, dies ist aber für meinen Verwendungszweck nicht möglich (Ich wollte für ein Kernel ein union für Deskriptoren machen...)
Schade, dass es so einfach nicht möglich ist.

-
das geht durchaus:
union { struct Bar { int x; int y; }; struct { float f; char c; } bar; } foo = { { 0.0f, 1 } };die initialisierungsliste initialisert dabei grundsätzlich den ersten deklarierten benannten member, hier also bar. wenn der erste struct auch einen namen hätte, würde stattdessen dieser initialisiert werden.
-
hi, danke

kann ich dann auch irgendwie in der initialisierungsliste beide substructs in einem Array verwenden verwenden (funktioniert nach deiner methode ja noch, oder), d.h. das erste element des arrays mit Struktur 1 und das zweite mit struktur 2 initialisieren?
-
die initialisierungsliste initialisert dabei grundsätzlich den ersten deklarierten benannten member, hier also bar. wenn der erste struct auch einen namen hätte, würde stattdessen dieser initialisiert werden.
wenn das stimmt (und das tut es IMHO) ist es nicht möglich, da
grundsätzlich der erste deklarierte benannten member
initialisiert wird.