Überladen von operator<<
-
Hallo.
Ich habe zurzeit keine plan wie ich an eine bestimmte Sache rangehen soll.
Ich habe mit das Tutorial hier auf c-plusplus.net zu den <<operator angesehen, nur ist das sehr kurz.Naja also was ich eig. erreichen wollte ist
MyClass << "teststring" << myclass::color1;teststringist ein String und hinter myclass::color1 ist ein enum.
Ich weiß leider garnicht wie ich daran gehen soll
std::ostream& operator <<(std::ostream &ostr,Myclass const& myclassinst);Und dann ?Kein plan.
Vielen Dank schonmal.
-
Also.

std::ostream& operator <<(std::ostream &ostr,Myclass const& myclassinst) { return ostr << myclassinst.get_Variable1() << '\n'; }Nicht so schwer, oder.
Codepad.
-
MyClass& operator << (MyClass& myclass, SomeOtherClass const& other)
-
War das echt PI?
Edit: Ach Nein! Du Armer wurdest doch nicht gebannt?
-
Ich bin nicht arm, ich wurde zurecht gebannt :'D
-
Ok das von PI war so am nähersten dran.Ich hab jetzt selbst nochmal geschaut.
So möchte ich, das mein endcode "ist"enum COLOR_CODE { BLACK,WHITE,YELLOW }; COLOR_CODE operator<<(COLOR_CODE& CC,std::string x) { //hier sollte es dann so sein dass es den string einfach nimmt und meine //schon fertige color funktion anwendet myclass.setfontcolor(byte Color); //hier dann wird das enum CC verarbeitet std::cout << x; } COLOR_CODE test; test << COLOR_CODE::YELLOW << "TEST";Ok hab deinen link erst jetzt gesehen.Werd's mir jetzt durchlesen.
-
Ahh ok danke Hacker hab mir deinen Codepad code angesehen und habs jetzt verstanden.Danke man.
-
@TE: einen String in einen COLOR_CODE zu "schieben" sieht reichlich unintuitiv aus. Wozu willst du sowas machen? Operatoren zu überladen nur damit man operatoren überladen hat ist nicht der richtige Weg.
-
Das sieht nicht nur unintuitiv aus, ist auch reichlich unflexibel (immer std::cout).
Möchtest Du nicht in Wirklichkeit einen Colorcode in einen Stream schieben?
Oder möchtest Du so eine Art Streamklasse selbst schreiben?
EDIT:
Wenn ich die Quelltextkommentare richtig verstehe, erwartest Du bei myClass << COLOR_CODE << "string", dass ein operator<< mit zwei Parametern color_code und string aufgerufen wird? Da bist Du völlig auf dem Holzweg:// wird aufgerufen bei myObj << white MyClass &operator<<( MyClass& myObj, color_code const& cc ) { myObj.setfont(cc); return myObj; } // wird aufgerufen bei (Rückgabe von oben) << "text" MyClass &operator<<( MyClass& myObj, string cvonst& text ) { myObj.print(text); return myObj; }