Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » überladen von << operator

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.07.2003, 13:21 Uhr
~Steffi
Gast


Hallo,

ich weis nicht wie ich in einer klasse den << operator überladen soll

was brauch ich denn da für einen rückgabewert??

z.b. bei einer klasse complex (für die Komplexen zahlen)

void operator << (ostream &out , complex &rhs)
{
cout << rhs.getreal << ...
}

oder muss ich statt void einen ostream zurückgeben ?

ich hoffe jemend kanm mir helfen

liebe grüße steffi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.07.2003, 13:35 Uhr
~0xdeadbeef
Gast


Normalerweise gibt man da einen ostream& zurück, damit man solche Dinge:

C++:
cout << "Hello," << ' ' << "World!" << endl;


machen kann. Also zum Beispiel:

C++:
ostream &operator<<(ostream &out, complex &rhs) {
    out << rhs.getreal() << '+' << rhs.getimag() << 'i';
    return out;
}


oder sogar

C++:
ostream &operator<<(ostream &out, complex &rhs){
    return out << rhs.getreal() << '+' << rhs.getimag() << 'i';
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.07.2003, 13:45 Uhr
~Steffi
Gast


bei der unteren möglichkeit bekomm ich aber folgenden
fehler

Binaerer Operator '<<' hat zu viele Parameter

mach ich vielleicht beim aufrufen irgendwas fallsch??

int main()
{
complex x,y;
...

// und dann schreib ich einfach

cout << x;

//das passt schon oder??

}
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.07.2003, 14:03 Uhr
~0xdeadbeef
Gast


Du darfst den operator nicht innerhalb der Klasse complex deklarieren. Nicht so;

C++:
//complex.h
class complex {
    //...
    ostream &operator(ostream&, complex&); //FALSCH!
};


sondern

C++:
//complex.h
class complex {
    //...
};

ostream &operator(ostream&, complex&); //Richtig.


Dieser Post wurde am 03.07.2003 um 14:49 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.07.2003, 14:03 Uhr
virtual
Sexiest Bit alive
(Operator)


Du must den operator global (als friend) definieren, nicht innerhalb der Klasse.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.07.2003, 14:11 Uhr
~0xdeadbeef
Gast


friend ist nur dann nötig, wenn der operator auf private Elemente der Klasse zugreifen muss. Das ist hier nicht der Fall, also würd ichs auch sein lassen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.07.2003, 14:14 Uhr
~Steffi
Gast




Dankeschön habs jetzt hinbekommen,
mit ner Friend funktion was mir zwar noch nicht so gut
gefallt aber jetzt kann ich wieder rumspielen

liebe grüße steffi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: