000
21.03.2011, 20:51 Uhr
shadax
|
Hallo zusammen,
es geht darum, alle Member-Variablen beim Inzanzieren einer struct (/Klasse) *automatisch* mit default-Werten zu initialiseren, also *nicht* explizit per Elementinitialisierungsliste.
Die struct sähe zunächst beispielsweise so aus:
C++: |
struct XXX { int i; float f; Foo foo; Bar * bar; std::vector<Baz> bazzes; std::vector<Waldo *> waldos; // ... };
|
Preisfrage:
Wenn diese struct nun einen default-ctor bekommt, der folgendes macht, was passiert dann genau?
C++: |
struct XXX { // ...
XXX() { static XXX zeroed; *this = zeroed; } };
|
Ist es so, dass
beim ersten Aufruf des XXX-ctors tatsächlich (wie gewollt) erst mal komplett genullt wird, *dann* aber sofort der XXX-ctor auf
losgelassen wird, dieser erkennt, dass lediglich die Member-Variablen
,
und
non-POD-Types sind, dementsprechend deren default-ctoren aufruft und danach aus dem vermeintlich rekursiven ctor-Aufruf von XXX wieder rausspringt?
Wenn dem so wäre, dann wäre mein Ziel erreicht, "relativ einfachen" structs "relativ einfach" zu initialisieren.
Grüße, shadax Dieser Post wurde am 21.03.2011 um 20:54 Uhr von shadax editiert. |