これは、左のストリーム演算子をオーバーロードするための正しい方法は何ですか? (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
手は、ディスプレイが型char*
のパブリックデータメンバーであり、私が作ったクラスである。
誰もが私が間違ってやっているものを私に伝えることができますか?
解決
宣言は右に見えます。しかし、エラーメッセージは、タイプとしてostream
知られていないことを示唆しています。 iostream
ヘッダを含む試してみて、代わりにstd::ostream
を言います。
あなたが考慮すべきもう一つは、const参照をパラメータ「手」を作っています。だから、また一時を受け入れ、それらをプリントアウトすることができます。
他のヒント
これは、ヘッダ内にありますか?あなたはおそらくstd::ostream
を言う必要があります。あなたは#include<iosfwd>
ていることを確認します。
また、あなたはおそらくconst hand&
を言うことができます。
所属していません StackOverflow