Das funktioniert nicht so wie ichs mir gedacht hab *heul*
-
Hi,
1.) In C++ benutzt man new und delete bzw. new[] und delete[].
2.) Du gibst den angeforderten Speicher nicht wieder frei. Das solltest du spätestens im Destruktor tun.
3.) Const Correctnessconst char* getCharSequence() const {...} const String operator+(const String& str1, const String& str2)
4.) Benutze die Stringfunktionen. z.B. strlen, strcmp, strcat, strcpy
5.) Benutze lieber doch std::stringEs wäre ganz hilfreich wenn du uns sagst was nicht läuft und wenn möglich
Fehlermeldungen zu posten.
-
noch ein paar augenscheinlichkeiten:
der namespace std fehlt, sprich:
friend std::ostream& operator<<(std::ostream& os, String str);
die String operator+ operation würde ich außerhalb der klasse stehen lassen.
und vieles mehr,.. da steht oben eine unkoordinierte 2 hinter dem includewächter, der includewächter kommt um die klasse..
hier fehlt eine eckige klammerfriend bool operator<(char chr, String str);
-
Als Ritter des Unicodes muss ich jetzt hier auch mal dezente Kritik anbringen... wieso arbeitest du mit char und nicht mit wchar_t oder machst die Klasse generisch? Eine Klasse, die gerade mal ein ganzes Byte pro Zeichen opfert macht mich nicht besonders an.
-
Hi!
void operator+=(String str) {*this += str.charSequence;}
Das hier funktioniert doch nicht. Ich denke mal du willst einen String anhängen. Du kannst aber nicht 2 Zeiger addieren und zuweisen. Dafür solltest du strcat/strncat verwenden:
void operator+=(String str) {strcat(this->charSequence, str.charSequence); }
Code-Hacker
-
Optimizer schrieb:
Als Ritter des Unicodes muss ich jetzt hier auch mal dezente Kritik anbringen... wieso arbeitest du mit char und nicht mit wchar_t oder machst die Klasse generisch? Eine Klasse, die gerade mal ein ganzes Byte pro Zeichen opfert macht mich nicht besonders an.
-
C Newbie schrieb:
2.) Du gibst den angeforderten Speicher nicht wieder frei. Das solltest du spätestens im Destruktor tun.
jaja, Java versaut einem den Stil!
*hechtrollezurseitemachundindeckunggeh*
-
von java nach c++ ist ein stieniger weg, da fehlt einfach der durchblick. string-klasse ist zu schwer, mach erstmal basics.
-
DasPinscht schrieb:
*hechtrollezurseitemachundindeckunggeh*
Und nur gaaaanz knapp verfehlt dich die Kaffeebohne, die auf dich gezielt war.
-
Moin
1. Die Klasse ist noch nich fertig.
2. Ich hab sie ZUR ÜBUNG hergestellt, außerdem wollt ich mich daran freun was ich alles schon kann
3. @code-hacker: ICH kann einen Char Zeiger zu einem String addieren! (Siehe operator+=(char *chr)
4. Ich wollte nur schaun was ich alles schon tolles kann und außerdem ist sowas selbstgemachtes doch toll!!!
-
elise schrieb:
und vieles mehr,.. da steht oben eine unkoordinierte 2 hinter dem includewächter, der includewächter kommt um die klasse..
Die unkoordinierte 2 ist doch eigentlich egal. Viele Leute nehmen dafür eine 1.
-
Hi!
berdl.de schrieb:
3. @code-hacker: ICH kann einen Char Zeiger zu einem String addieren! (Siehe operator+=(char *chr)
Sorry, habe ich nicht gesehen.
Code-Hacker
-
4. Ich wollte nur schaun was ich alles schon tolles kann und außerdem ist sowas selbstgemachtes doch toll!!!
das ist ganz falsches denken, der programmierer muss faul sein, und die uber-algorithmen benutzen, die andere programmierer ihm auf einem silbernen tablett auf Knien rutschend reichen ;).
Klar, es ist schön zur abwechslung auch was selber zu machen, aber das heist nicht, dass mans hinterher auch nur einmal ernsthaft benutzen wird ;).
Worauf ich hinaus will: es hat keinen sinn,etwas woran andere schon einige jahre gearbeitet haben, innerhalb weniger wochen nachzucoden, das ergebnis wird bestimmt nicht besser, gegen die hochoptimierten algorithmen der profis kommst du eh in 99% der fälle nicht an(najut, string ist wieder so ein grenzfall, aber string zu schlagen schafft man imho nur mit hoch spezialisierten klassen, und dann auch nur in wenigen punkten)
ps: der text enthält einige ironische komponenten, sowie elemente die teil der absoluten wahrheit sind