operator= überladen, sodass man chars mit = gegenseitig zuweisen kann
-
Warum geht das hier nicht:
char* operator= (char *lhs,char *rhs);error: `char* operator=(char*, char*)' must be a nonstatic member function
MfG
Stromberg
-
Wie willst du den denn dann verwenden???
-
operator= kann nur für Klassenobjekte als linker Operand und nur als nichtstatische Memberfunktion überladen werden.
-
Hallo
D schrieb:
Wie willst du den denn dann verwenden???
Wie er beschrieben hat : er will das leidige strcpy umgehen...
camper hat schon gesagt das es nicht geht (er hat dir im Grunde nur die Fehlermeldung übersetzt...). Verwende std::string dann kannst du auch einfach zuweisen.bis bald
akari
-
Und warum kann man eigentlich den operator = nur in Klassen - also als einseitigen Operator - verwenden?
MfG
Stromberg
-
Stromberg schrieb:
Und warum kann man eigentlich den operator = nur in Klassen - also als einseitigen Operator - verwenden?
Weil C++ garantiert, dass die Semantik der Basistypen nur erweiterbar, nicht aber veränderbar ist. D.h. wenn irgendwo steht 'a = b' und a und b sind beide vom Typ 'char*', dann ist ein gewisses Verhalten definiert, das sich nicht verändern lässt.
Daher ist Dein Code nicht zulässig.
-
halli hallo,
du könntest es anstatt des = operators einfach mal mit dem << operator versuchen. das sollte funktionieren. dem entgegen steht dann natürlich die gute lesbarkeit des codes. allerdings finde ich es für char-ketten gar nicht so abwegig, sie wie streams operieren zu lassen...
mfg
marco
-
nonstatic member schrieb:
du könntest es anstatt des = operators einfach mal mit dem << operator versuchen. das sollte funktionieren. dem entgegen steht dann natürlich die gute lesbarkeit des codes. allerdings finde ich es für char-ketten gar nicht so abwegig, sie wie streams operieren zu lassen...
Ich halte Operatoren in dieser Hinsicht für vollkommen falsch, egal ob über + oder <<.
Sag mir mal was - wenn wir irgendeinen Operator für char* definieren - mit der Speicherzuweisung, und bereits definierten Verhalten passieren soll...
Nehmen wir doch einfach mal an, irgendwer verwendet dann den Code wie folgt:
char* test = "a" + "b";Ist nun der Operator für die Speicherallozierung verantwortlich, das Ziel kann es ja nicht sein, da es ein Returnvalue zugewiesen bekommt.
Und was passiert dann hier:
std::cout << "a" << "b";Könnte es sein das sich dann das Verhalten verändert?
cu André