//Wo im Standard? int* array[2][2] = { NULL };
-
int* array[2][2] = { NULL };soweit ich das richtig im Kopf hatte, schreibt der Standard vor, dass dadurch ALLE Einträge im Array mit NULL initialisert werden.
Hat jemand grad den Abschnitt in der ISO parat?Und wieso erhalte ich bei obigen Kontrukt die warning:
missing braces around initializer
?
-
12.6.1 Punkt 2
"[...] If there are fewer initializers in the initializer-list than members of the aggregate, each member not explicitly initialized shall be value-initialized"
Zur Warnung: Das erste Element ist ein int[2], müsste also so aussehen:
int* code[2][2] = { { 0 } };
-
okay, nun habe ich es auch gefunden! danke.
für ein 3D-Array muss es dann folglich zur Vermeidung der warning so aussehenint* array[2][2]][2] = { { { NULL} } };Der Compiler stört sich also daran, dass ich das Feld nicht exakt angebe, richtig?
-
Bei structs geht das soweit ich weiß ja auch,
MeinStruct mSt = {0};
Aber was ist da eigentlich wenn dieses struct auch wieder structs beinhaltet? Dann wird auch gemeckert...
-
In C++ ist es erlaubt (8.5.1 Punkt 8), null Elemente anzugeben, da reicht dann ein leeres Klammerpaar. Dann ist die Initialisierung unabhängig von der Dimension des Arrays oder dem Typ der Mitglieder.
-
warum schreibst du eigtl bei jedem topic immer // davor?
-
damit ich meine eigenen threads wiedererkenne

nein, Spass beiseite. alte angewohnheit... eigentlich schreibe ich immer"[boost] shared_ptr",
damit man weiß worum es grob geht oder eben
"//boost - shared_ptr"
nix für ungut,
SirAnn