Struct casten? Struct in Array speichern?
-
Moin!
Ich habe das Problem, dass ich ein Struct-Element in einem Array speichern will. Würde bestimmt klappen, wenn es keinen Fehler geben würde ^^
Hier mein Code:struct test{ int a,b; }; test arr[2]; test t = {1,2}; arr[0] = t; // so klappt es... Ist aber zu umständlich arr[1] = {1,2}; // so aber nicht =( So hätte ich es aber gerne.
Jetzt habe ich versucht es zu casten
arr[1] = (test){1,2};
ging aber auch nichtHabt ihr eine Ahnung?
-
Du kannst einzelnen Array-Elementen nicht mit der Initialisierer-Syntax Werten zuweisen, aber es gibt zwei Alternativen.
Entweder das gesamte Array:test arr[2] = { { 1, 2 }, { 3, 4 } };
oder aber du erzeugst dir einen Konstruktor für die Struktur
struct test{ int a,b; test(int aa=0, int bb=0) // Konstruktor mit Default-Argumenten : a(aa), b(bb) // Initialisierer-Liste {}; }; test arr[2]; // Initialisierung mit Default-Konstruktor: test(0, 0) arr[0] = test(1, 2); // Zuweisung der konstruierten Struktur
-
Th schrieb:
oder aber du erzeugst dir einen Konstruktor für die Struktur
Eine normale Funktion kann diesen Zweck auch erfüllen und ist nicht weniger effizient. Nützlich ist das dann, wenn die Struktur ein POD sein soll (mit C++0x entfällt dieses Argument dann allerdings):
test make_test(int a=0, int b=0) { test x = { a, b }; return x; } test arr[2]; arr[0] = make_test(1, 2);
Eine verschachtelte Aggregatinitialisierungsliste ist nat. ebenso möglich.
-
Bestens - vielen Dank