Est-ce la bonne façon de surcharger l'opérateur flux de gauche? (C ++)
-
06-09-2019 - |
Question
Cette déclaration de fonction me donne des erreurs:
ostream& operator<<(ostream& os, hand& obj);
Les erreurs sont:
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
la main est une classe que je fait, l'affichage est membre de données publiques de type char*
.
Quelqu'un peut-il me dire ce que je fais mal?
La solution
La déclaration ressemble à droite. Mais le message d'erreur indique que ostream
n'est pas connu comme un type. Essayez d'inclure l'en-tête de iostream
et dire std::ostream
à la place.
Une autre chose que vous devriez considérer est fait le paramètre « main » une référence const. Donc, vous pouvez aussi accepter et de les imprimer temporaires sur.
Autres conseils
est-ce à l'intérieur d'un en-tête? alors vous avez probablement besoin de dire std::ostream
. Assurez-vous #include<iosfwd>
.
En outre, vous pouvez dire probablement const hand&
.