String einlesen und als nicht durch 0 terminiertes char-Array speichern, genaueres Inside...
-
hab hier :
String(char* param) { laenge = strlen(param); internarray = (char*) malloc(laenge*sizeof(char)); make_string(param);
ja extra kein -1 an der länge gemacht damit noch für 1 zeichen mehr platz ist, so ist glaub ich genug speicher vorhanden
-
@hustbaer
der copy konstruktor soll in aufgabenteil c) ja auch von uns neu geschrieben bzw. überladen werden, noch kein peil wie aber ich setz mich mal dran, bisher funktioniert alles, den + operator hab ich auhc schon überladen funktioniert auch alles, nur hab ich noch en problem mim dynamischen CHar array erstellen.
-
real12313 schrieb:
hab hier :
String(char* param) { laenge = strlen(param); internarray = (char*) malloc(laenge*sizeof(char)); make_string(param);
ja extra kein -1 an der länge gemacht damit noch für 1 zeichen mehr platz ist, so ist glaub ich genug speicher vorhanden
Ne, strlen zählt nur die Zeichen bis zum '\0', also müsstest du für die korrekte Länge noch eins draufaddieren
-
@real1231231: Ok. Ich weiss nicht wie euer Lehrer/Vortragender/... das haben möchte, aber normalerweise sollte man den copy-ctor und den assignment operator "private" machen wenn die automatisch vom Compiler erstellten Versionen "nicht passen" und man selbst keine geeignete Definition schreiben kann oder will. Damit sie eben nicht aufgerufen werden können - so können keine unbeabsichtigten Fehler passieren.
Also entweder eine funktionierende Definition selbst schreiben, oder private machen.
Die Definition von so einem privaten copy-ctor/assignment operator lässt man üblicherweise auch weg, da sie ja sowieso nie aufgerufen werden können. Steht doch irgendwo ein Aufruf (z.B. IN der Klasse selbst wäre das ja möglich) bekommt man so einfach einen Linker-Error, was auch gut ist.
Sieht ca. so aus:
class String { public: // ... private: String(String const&); // not copyable String& operator =(String const&); // not assignable // ... };
-
Hey,
so ich hatte jetzt 2 Wochen kein Internet und konnte daher erst jetzt die Diskussion und die Aufgabe weiter verfolgen. Ich habe mir jetzt den Quelltext von real mal angeguckt, und die Ausgaben bzw. das programm verfolgt, aber es ist nicht ganz ersichtlich bei den Ausgaben auf dem Bildschirm was genau passiert.
Daher wäre es schön wenn er mal seinen Quelltext posten würde, damit man das Ganze mal vergleichen kann.
-
ich persönlich mag die sehr genaue formulierung der aufgabe weil sie keinen zweifel lässt was gewünscht wird abgesehen davon, dass man die formulierung erstmal verstehen muss
wenn ich das richtig verstanden habe soll nur die interne darstellung nicht zero-terminiert sein, das per get zurückgegeben char-array schon. warum nicht ein temporales char-array erzeugen daß eine copy vom internen char-array ist und zur sicherheit an letzter stelle die Null schreiben (ist sie nicht per default da?).
Rückgabe soll ein Array sein ... geht denn das?
Ich habs selber noch nit hingekriegt ausser Zeiger auf Arrays.
Wenn es geht, dann rate ich dir dringend es nicht anders zu machen!!!
Alles andere wären Minus-Punkte!!!
Er würde es nicht so messerscharf formulieren, wenn er es nicht auch genau so meinen würde!!!
(daher denke ich es geht!)