Zuweisungsoperator überladen
-
Hallo,
ich habe eine Klasse die etwa so aussieht :
class test { test &operator=(const test &t); private : int werte[100]; }dafür möchte ich nun den Zuweisungsoperator = überladen.
// Zuweisungsoperator test &test::operator=(const test &t) { int i=0; werte = new int [100] ; -- hier liegt mein Problem for (i=0;i<CODEWORD_LENGTH;i++) { werte[i] = t.werte(i); } return *this; }Ich müsste wohl in meiner Klasse
int *werte;gibts da ne möglichkeit wie ich das gemacht hab mit
int werte[100], und dann trotzden noch neuen speicherplatz zu belegen `danke
chris
-
wenn du sowieso nur elementweise kopieren willst, brauchst du im Falle eines Arrays in der Klasse keinen eigenen Operator implementieren (also lass es besser), es sei denn, der Elementtyp könnte bei der Zuweisung eine Exception werfen und dein Operator sol Exception-sicher sein. Bei ints hast du da aber kein Problem.
-
Hallo
Wenn du in jeder Instanz genau 100 Integers brauchst, must du doch gar nicht dynamisch Speicher reservieren. Das Kopieren der einzelnen Werte machst du doch schon, mehr ist dann nicht nötig. Das sollte übrigens auch der Standard-Zuweisungsop machen den der Compiler erstellt wenn kein manueller Op da ist.
Wenn du wirklich ein dynamisches Array brauchst dann nimm gleich std::vector, dann kann der Compiler auch wieder einen passenden Op zusammenstellen./Edit : zu spät
bis bald
akari