Ich verstehe, dass memberwise Zuweisung von Arrays nicht unterstützt wird, so dass die folgenden nicht funktionieren wird:
int num1[3] = {1,2,3};
int num2[3];
num2 = num1; // "error: invalid array assignment"
Ich habe dies einfach als Tatsache hingenommen, da ich dachte, dass das Ziel der Sprache darin besteht, einen offenen Rahmen zu bieten und den Benutzer entscheiden zu lassen, wie er etwas wie das Kopieren eines Arrays implementieren möchte.
Die folgende Methode funktioniert jedoch:
struct myStruct { int num[3]; };
struct myStruct struct1 = {{1,2,3}};
struct myStruct struct2;
struct2 = struct1;
Das Array num[3]
wird mitgliederweise von seiner Instanz in struct1
in seine Instanz in struct2
.
Warum ist member-wise Zuweisung von Arrays für structs unterstützt, aber nicht im Allgemeinen?
editar : Roger Pate Kommentar im Thema std::string in struct - Probleme beim Kopieren/Zuordnen? scheint in die allgemeine Richtung der Antwort zu weisen, aber ich weiß nicht genug, um es selbst zu bestätigen.
bearbeiten 2 : Viele ausgezeichnete Antworten. Ich wähle Luther Blissett Das liegt daran, dass ich mich hauptsächlich über die philosophischen oder historischen Gründe für dieses Verhalten gewundert habe, aber James McNellis Der Verweis auf die zugehörige Spezifikationsdokumentation war ebenfalls nützlich.