Klasse mit char* als Dataelement
-
Hallo,
ich möchte eine Klasse definieren, die als Dataelement einen String mit vorgegebener Länge (z.B. 6) haben muß. Irgendwie kriege ich das nicht hin, diese Einschränkung gleich in der Klassendefinition zu machen, so daß ich folgende Lösung gewählt habe:
MyClass(int, char*, bool);Das funktioniert soweit gut. Nun, habe ich im
mainfolgenden Code:
char mystring[10]; MyClass MyClassInst[3]; for (int i=0;i<3;i++) { cout << i+1 << " "; cin >> mystring; MyClassInst[i]=MyClass(i+1,mystring,true); }Das Problem ist, daß nach der Schleife, die Array
MyClassInstdenselben string hat und zwar den zuletzt gesetzten! Das leuchtet mir eigentlich auch ein, da ich immer einen Zeiger übergebe, d.h. die feste Adresse mit neuen Werte belege und überschreibe!! Wie kann ich das vermeiden?
Im voraus besten Dank für jede Hilfe!
Gruß,
Emmanuel
-
emmanuel schrieb:
Irgendwie kriege ich das nicht hin, diese Einschränkung gleich in der Klassendefinition zu machen,
"Irgendwie kriege ich das nicht hin" ist keine ausreichende Fehlerbeschreibung.
Wie kann ich das vermeiden?
std::string benutzen.
-
Und wenn du unbedingt auf blanken char-Arrays arbeiten willst - leg dir im Konstruktor ein neues Array an und kopiere die Daten mit strcpy() dort rein.