Это правильный способ перегрузки оператора левого потока? (C ++) - PullRequest
0 голосов
/ 30 мая 2009

Это объявление функции дает мне ошибки:

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

hand - это класс, который я создал, display - открытый элемент данных типа char*.

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

Ответы [ 2 ]

7 голосов
/ 30 мая 2009

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

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

2 голосов
/ 30 мая 2009

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

Кроме того, вы, вероятно, можете сказать const hand&.

...