É esta a maneira correta de sobrecarregar o operador-stream esquerda? (C ++)
-
06-09-2019 - |
Pergunta
Esta declaração função me dá erros:
ostream& operator<<(ostream& os, hand& obj);
Os erros são:
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
mão é uma classe que eu fiz, exibição é um membro de dados pública do tipo char*
.
Alguém pode me dizer o que estou fazendo de errado?
Solução
A declaração parece certo. Mas a mensagem de erro sugere que ostream
não é conhecido como um tipo. Tente incluindo o cabeçalho iostream
e std::ostream
digamos vez.
Outra coisa que você deve considerar é fazer o parâmetro 'mão' uma referência const. Então, você também poderia aceitar temporários e imprimi-los.
Outras dicas
é isso dentro de um cabeçalho? então você provavelmente precisa dizer std::ostream
. Certifique-se de #include<iosfwd>
.
Além disso, você provavelmente pode dizer const hand&
.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow