Ist dies der richtige Weg, um den linken Stream Operator zu überlasten? (C ++)
-
06-09-2019 - |
Frage
Diese Funktion Erklärung gibt mir Fehler:
ostream& operator<<(ostream& os, hand& obj);
Die Fehler sind:
error C2143: syntax error : missing ';' before '&'
error C4430: missing type specifier
error C2065: 'os' : undeclared identifier
error C2065: 'obj' : undeclared identifier
error C2275: 'hand' : illegal use of this type as an expression
see declaration of 'hand'
error C4430: missing type specifier
Hand ist eine Klasse I gemacht, Display ein öffentliches Daten ist Mitglied des Typ char*
.
Kann mir jemand sagen, was ich falsch mache?
Lösung
Die Deklaration sieht richtig. Aber die Fehlermeldung deutet darauf hin, dass ostream
nicht als eine Art bekannt ist. Versuchen Sie, einschließlich der iostream
Header und sagen std::ostream
statt.
Eine andere Sache, die Sie berücksichtigen sollten, macht der Parameter ‚Hand‘ eine konstante Referenz. So könnte man auch Provisorien akzeptieren und ausdrucken.
Andere Tipps
ist dies in einem Header? dann müssen Sie wahrscheinlich std::ostream
sagen. Stellen Sie sicher, dass Sie #include<iosfwd>
.
Sie können aber auch wohl sagen const hand&
.