1. ホーム
  2. c++

[解決済み] 識別子 "ostream "が未定義であるエラー [終了しました]。

2022-03-11 19:57:02

質問

出力に演算子 << をサポートする数値クラスを実装する必要があります。 というエラーが出てしまいます。

ヘッダーファイルはこちらです。

番号.h

#ifndef NUMBER_H
#define NUMBER_H
#include <iostream>
class Number{
public:
//an output method (for all type inheritance from number):
virtual void show()=0;

//an output operator:
friend ostream& operator << (ostream &os, const Number &f);


};

#endif

なぜコンパイラはフレンド関数で ostream を認識しないのでしょうか?

解決方法は?

名前を完全に修飾する必要があります ostream には、そのクラスが属するネームスペースの名前を指定します。

    std::ostream
//  ^^^^^

というわけで、演算子宣言はこうなるはずです。

friend std::ostream& operator << (std::ostream &os, const Number &f);
//     ^^^^^                      ^^^^^

あるいは using の前に宣言します。 ostream が表示されます。

using std::ostream;

これによって ostream の名前を完全修飾せずに、現在のプログラムのバージョンと同じようにします。