Klasse String
-
Hallo, ich habe eine Klasse namens CString erstellt.
Nun möchte ich den - Operator überladen, um ein Zeichen aus einem String zu löschen
Wenn ich die Funktion entf nenne und sie folgendermaßen definiere: entf(char c) und mit b.entf(char c) aufrufe, funktioniert alles.
Ich möchte aber eigentlich den Operator - überladen, wie könnte das am besten definieren?
Operator-(const CString & b, char c) sagt mir nur, dass ich nur mit 0 oder 1 Argument definirren darf.Würde mich freuen wenn mir jemand helfen könnte.
Falls noch Code oder eine Fehlermeldung benötigt wird, gebe ich diese natürlich anMfg hackhack1234
-
1. Bist du wahrscheinlich im falschen Unterforum.
2. Ist operator- eine Methode, du brauchst als erstes Argument also natürlich nicht den String wollen, von dem du etwas abschneiden willst, sondern lediglich den rechten Operanden vom minus.
2. Dieser Fall ist ein Beispiel dafür, wo man solche Operatoren vermeiden sollte. Guckt sich jemand den Code an und denkt, was denn das minus da tut. Würde ich jedenfalls nicht als intuitiv betrachten.
3. C-Prefix? Wo lebst du, im Mittelalter?
4. Vergiss den kopier/move zuweisungsoperator/konstruktor nicht, sonst können dir bei der Verwendung seltsame Dinge geschehen. Ein Schritt, das zu vermeiden, Sind Smartpointer.
-
Den Operator muss ich leider überladen, ist in der Angabe so vorgegeben
-
Ok, habe es durch deine Hilfe lösen können.
Vielen Dank!
-
Eine Frage hätte ich allerdings noch, wenn ich diese noch in diesem Unterforum stellen darf.
Ich hätte gerne, dass ich ein Objekt CString, folgendermaßen erstellen kann: CString b = "abc";
Sollte ich da ebenfalls den = Operator überladen?
Momentan habe ich einen Konstruktor, der CString::CString(char * zeichenkette) lautet, mit diesem kann ich jedoch natürlich nicht einen Charakter einlesen.
Wäre nett, wenn mir jemand hier noch einen kleinen Tipp geben könnte
-
hackhack1234 schrieb:
Ich hätte gerne, dass ich ein Objekt CString, folgendermaßen erstellen kann: CString b = "abc";
Sollte ich da ebenfalls den = Operator überladen?
Momentan habe ich einen Konstruktor, der CString::CString(char * zeichenkette) lautet, mit diesem kann ich jedoch natürlich nicht einen Charakter einlesen.
Nein, der Konstruktor mit
char*
als Argument reicht schon - allerdings solltest du die Zeichenkette Konstant machen, alsoconst char*
.Das Gleichzeichen bedeutet in diesem Kontext eine Initialisierung, keine Zuweisung - etwas verwirrend.
Was du mit folgender Aussage meinst, verstehe ich nicht:
hackhack1234 schrieb:
mit diesem kann ich jedoch natürlich nicht einen Charakter einlesen.
Übrigens, von Techel schon angetönt, ist es nicht mehr zeitgemäss Klassennamen mit einem grossen C zu beginnen.
-
Ok mit const *char funktioniert es jetzt, vielen Dank aufjedenfall!
Und danke auch an die Info, dass das C nicht mehr zeitgemäß ist.Schönen Tag noch!
LG hackhack1234