Operator overloading <<
-
Hallo.
Ich hab ne Frage (ach was *gg*) Ich soll mit c++ eine Klasse String implementieren, die unter anderem due Funktion bieten soll, dass man den String per cout ausgeben kann. Ich muss also cen <<-Operator überladen. Soweit so gut, ich hab mich ein bisschen schlau gemacht und auch irgendwann ne Lösung gefunden, die so aussieht:
ostream& operator<<(ostream& oStream,String& str){ oStream<<str.getWord()<<endl; return oStream; };
Nun zu meinen Fragen:
1, <iostream> kann ich nicht inkludieren (an die 20 Fehlermeldungen)
aber <iostream.h> geht, is ja aber nicht unbedingt c++, was kann ich machen?
2, Selbst wenn ich <iostream.h> inkludier (in der .cpp und in der .h), aber in der Main trotzdem die <iostream> inkludier
is klar, dass er da meckert, weils cout dann ja öfter gibt. Ich brauch aber das "originale" cout auch.Kann mir jemand helfen?
MfG,
Sandra
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Du brauchst <ostream>.
std::ostream& operator<<(std::ostream& oStream,String& str){ oStream<<str.getWord()<<std::endl; return oStream; }
Es wäre wohl auch noch gut, den String als Referenz auf const zu übergeben.
-
Du hast den falschen Header mitgenommen. In der <iostream> sind "nur" cin, cout und Kollegen, die nötigen Definitionen für deine Aufgabe findest du in der <ostream>.
(PS: Und <iostream**.h**> ist eine Prä-Standard-Version der <iostream>, die solltest du sowieso nicht zusammen mit <iostream> verwenden)
-
und natürlich:
using namespace std; //wenn du <iostream> verwendest //oder einzelne usings using std::cout; using std::cin; //oder jedesmal im code std::cout<<"hallo"<<std::endl; //usw...
-
Danke für die Hilfe.
Den Namespace hab ich natürlich angegeben, nur nicht mit rauskopiert.
Ich hab nun <ostream> inkludiert, aber nun sagt mir der Compiler, dass ostream ein mehrdeutiges Symbol ist. Woher kommt die Mehrdeutigkeit? Ist ja nur <ostream> inkludiert, wo soll denn dann eine 2. Definition sein? Ich benutz den Namen natürlich auch sonst nirgends
Sandra
-
Hast du irgendwo noch einen Standardheader mit .h drin?
-
Mit .h nur meine eigne Headerfile... aber sonst nix
-
Hey, ich habs endlich geschafft. Nun funktionert mein <<-Operator
Danke nochmal für eure Hilfe.
Lag einfach daran, dass sich der <<-Operator keine file mit andren Funktionen teilen wollte... nu hat er seine eigne und is zufrieden
Sandra