Überladene Opertoren hintereinander benutzen
-
Hi, mal ne Frage.
Wie kann ich operatoren so überladen, dass ich sie nacheinander benutzen kann?
Wie zum Beispielint a=1+2+3;, anstatt
int a=1+2,b=a+3;.
Odercout<<"Erster String"<<endl<<"Zweiter String";Ich habs an einer Klasse, die einen String speichert versucht, aber es benutzt immer nur das erste, was ich angebe.

Hier ist der Code
#include<iostream> #include<cstring> using namespace std; class CText { private: char m_acText[1024]; public: CText() { strcpy(m_acText,""); } char * getBuffer() { return(m_acText); } void operator<<(CText &t) { strcat(m_acText,t.m_acText); } CText operator<<(char *s) { strcat(m_acText,s); return(*this); } }; int main() { CText Text; Text<<"Hallo"<<" Welt!"; cout<<Text.getBuffer()<<endl; return(0); }Hat jemand ne Idee was ich falsch mache? Ich weiß dass es einfach ist, ich komm bloß nicht drauf
-
der operator<< sollte eine Referenz, anstatt einer Kopie zurück geben.
-
Tausend Dank!

Ging aber schnell!
-
Airdamn schrieb:
der operator<< sollte eine Referenz, anstatt einer Kopie zurück geben.
Und zwar beide Versionen

übrigens solltest du auch eine const-Referenz als Parameter übernehmen:
CTest& operator<<(const CTest& t) { strcat(m_acText,t.m_acText); return *this; }(und anstelle des char-Arrays würde ich lieber std::string verwenden)