web-dev-qa-db-ja.com

エラー:「ostream」はタイプに名前を付けません

C++で<<および>>演算子をオーバーロードしていますが、コンパイルできません。

エラーメッセージは次のとおりです。「エラー:「ostream」は型に名前を付けていません」なぜこのエラーが発生するのですか?修正方法

#ifndef COMPLEX_H
#define COMPLEX_H
#include <cstdlib> //exit

#include <istream>
#include <ostream>

class Complex{
    public:
    Complex(void);
    Complex(double a, double b);
    Complex(double a);
    double real() const{ 
        return a;
    }

    double imag() const{
        return b;
    }
    friend ostream& operator<<(ostream& out,const Complex& c);
    friend istream& operator>>(istream& in, Complex& c);


    private:
    double a;
    double b;
};

ostream& operator<<(ostream& out,const Complex& c){
    double a=c.real() , b = c.imag();
    out << a << "+" << b<<"i";
    return out;
}

istream& operator>>(istream& in, Complex& c){
    in >> c.a>> c.b;
    return in;
}
#endif
11
user2741941

使用する std::ostreamおよびstd::istream どこにでも。

ostreamistreamは名前空間stdにあります

24
P0W

名前空間stdで定義された型の米国修飾名

friend std::ostream& operator<<(std::ostream& out,const Complex& c);

また、2つの別個のヘッダー<iostream><istream>の代わりに<ostream>を含めることをお勧めします

4

追加するのを忘れた

using namespace std;
0
Lucca Psaila