2009-05-30 3 views
0

Эта функция декларация дает мне ошибки:Это правильный способ перегрузить оператор левого потока? (C++)

ostream& operator<<(ostream& os, hand& obj); 

Ошибки:

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 

рука класс я сделал, дисплей является членом данных общего типа char*.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

ответ

7

Декларация выглядит правильно. Но сообщение об ошибке предполагает, что ostream не известен как тип. Попробуйте включить заголовок iostream и вместо этого скажите std::ostream.

Еще одна вещь, которую вы должны рассмотреть, это сделать параметр «рука» ссылкой на константу. Таким образом, вы также можете принять временные и распечатать их.

2

это внутри заголовка? то вам, вероятно, нужно будет сказать std::ostream. Удостоверьтесь, что вы #include<iosfwd>.

Также вы можете сказать const hand&.