[stl] mit << werte an memberfunktion?



  • wie kann man werte mit dem << operator an memberfunktionen übergeben?
    (wie zbsp bei stringstreams)

    klappt das dann auch mit mehreren werten?

    (member << string << int << string...)



  • class Klasse
    {
        int myInt;
        friend Klasse& operator << (Klasse& stream, int obj);
    };
    
    Klasse& operator << (Klasse& stream, int obj)
    {
        stream.myInt = obj;
        return stream;
    }
    
    // Ermöglicht zB:
    Klasse obj;
    obj << 5;
    

    MfG SideWinder



  • class Test {
    	public:
    		void operator<<(string temp) {
    			cout << temp << endl;
    		}
    };
    

    so kann man nen string an die memberfunktion übergebn
    (test << "hallo welt"; )

    1. wie wäre es möglich 2 oder beliebig viele zu übergeben?
    (test << "hallo" << "welt" << "....)

    2. wenn ich anstelle von strings auch ints oder andere variablen übergebe, würde das mit templates klappen? kann man da auch verschiedene typen übergeben?
    (test << string << int << string << int....)

    danke



  • Dazu brauchst du einen anderen Rückgabewert:

    class Test {
    public:
        Test& operator<<(string temp) {
            cout << temp << endl;
            return *this;
        }
    };
    

    (auf diese Weise lassen sich mehrere <<-Aufrufe verketten)



  • Nachtrag zur zweiten Frage: Entweder du baust eine Template-Funktion

    class Test
    {
    public:
      template<typename T> Test& operator<<(const T& data)
      {
        //verarbeite data
        return *this;
      }
    }
    

    Oder du schreibst eine überladene Funktion für jeden Datentyp, den du verarbeiten willst (const string&,int,char,...)

    PS: Übrigens solltest du nicht "string temp" verwenden, sondern "const string& temp" - das ist üblicherweise schneller.


Anmelden zum Antworten