keine 3 Parameter mit << operator

  • keine 3 Parameter mit << operator

    Hallo,

    in meiner main steht folgender Aufruf:

    cout << computerzahl.richtigPlatzierte(meinVersuch);

    Dafür möchte ich einen <<operator nutzen.

    ostream& operator<<(MastermindZahl &out,const MastermindZahl& computerzahl) {
    out<<computerzahl.richtigPlatzierte(meinVersuch);
    return out;
    }

    Dabei sind computerzahl und meinVersuch Objekte.

    D.h. eigentlich müsste ich es so schreiben:

    ostream& operator<<(MastermindZahl &out,const MastermindZahl& computerzahl, const MastermindZahl& meinVersuch)

    Dieser Operator akzeptiert jedoch keine 3 Parameter.

    Wie kann ich dieses Problem lösen? Wie geht man dieses Problem wirklich an?

    Vielen Dank im Voraus.
  • Das ist ein bisschen komplizierter.
    Am einfachsten ist es, wenn du in der Klasse MastmindZahl eine Methode

    Quellcode

    1. ostream& operator << (ostream& o)
    2. {
    3. o << this->xyz;
    4. return o;
    5. }

    machst. Dann kannst du beliebig viel << hintereinander hängen.
    der Operator << nimmt immer nur 1 bzw. 2 Parameter, jenachdem ob es eine Methode (s.o.) oder eine Funktion (

    Quellcode

    1. ostream& operator << (ostream& o, const MastermindZahl& z){ o << z.getXyz(); return o;}
    ) ist.

    Überlegs dir mal ob das nicht eigentlich viel intelligenter ist, als dein Lösungsweg, weil wie würde sonst etwas wie

    Quellcode

    1. cout << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1
    2. << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1 << 1.1 << 1.1 << 1.1;

    funktionieren, denn für den ostream gibt es sicher keine Überladung, die erst einen Haufen "int" nimmt und zum Schluß 3 double.
    Damit würde je die Vielfalt der benötigten Methoden exponentiell ansteigen.

    hth