Является ли это правильным способом перегрузки оператора левого потока?(C++)
-
06-09-2019 - |
Вопрос
Это объявление функции выдает мне ошибки:
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&
.