[c++] << und >> Operator

FireFlow

Erfahrenes Mitglied
Hallo. Ich habe gerade mal so zum Testen eine Klasse geschrieben die man mit dem Operator << mit Daten füllen soll;

Code:
template <class T>
class test
{

    private:

        T var;

    public:

        test() : var(T()) {};

        operator= (const T& ref)
        {
            var = ref;
        }

        operator<< (const T& ref)
        {
            var += ref;
        }

        T get() {
            return var;
        }

};

Nun meine Frage:

Code:
    test<int> obj;
    obj = 5;
    obj << 1 << 4;
    cout << obj.get(); 
    // Ausgabe: 6

Warum wird der zweite Operator << 4 nicht abgearbeiten oder wie muss ich die Klasse umschreiben dass es geht.

Danke & Frhe Weihnachten
 
Du musst in dem Fall eine Referenz auf dein Objekt zurückgeben, damit du die Operation verketten kannst.

Code:
test& operator<< (const T& ref)
{
  var += ref;
  return *this;
}

Ich rate allerdings davon ab, den '<<'-Operator für so eine Operation zu missbrauchen. Was du da machst, entspricht exakt der Funktion des '+='-Operators, also benutz doch lieber den.

Übrigens werden viele Leute verwirrt, wenn man ihnen abwegig überladene Operatoren vorsetzt.
 
Zuletzt bearbeitet:
Ist mir durchaus klar dass der Operator hier nicht viel Sinn macht. Ich wollte nur mal wissen wie es geht. Danke für die Antwort funktioniert!
 
Zurück