Является ли это правильным способом перегрузки оператора левого потока?(C++)

StackOverflow https://stackoverflow.com/questions/928613

Вопрос

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

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*.

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top