E 'questo il modo corretto di sovraccaricare l'operatore di sinistra-stream? (C ++)
-
06-09-2019 - |
Domanda
Questa dichiarazione di funzione mi dà errori:
ostream& operator<<(ostream& os, hand& obj);
Gli errori sono:
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
mano è una classe che ho fatto, display è un membro di dati pubblici di tipo char*
.
Qualcuno può dirmi che cosa sto facendo male?
Soluzione
La dichiarazione guarda a destra. Ma il messaggio di errore suggerisce che ostream
non è conosciuto come un tipo. Prova inclusa l'intestazione iostream
e dire std::ostream
invece.
Un'altra cosa che dovrebbe prendere in considerazione sta facendo il parametro 'mano' un riferimento const. Così si potrebbe anche accettare provvisori e stamparle.
Altri suggerimenti
è presente all'interno di un colpo di testa? allora probabilmente hai bisogno di dire std::ostream
. Assicurati di #include<iosfwd>
.
Inoltre, probabilmente si può dire const hand&
.