错误:'ostream'没有命名类型

时间:2014-10-21 04:00:59

标签: c++ operator-overloading operators

我正在超载<<和>> C ++中的operator,但它无法编译。

错误信息是:"错误:'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

3 个答案:

答案 0 :(得分:23)

在任何地方使用std::ostreamstd::istream

ostreamistream位于名称空间std

答案 1 :(得分:4)

使用命名空间std

中定义的类型的限定名称
friend std::ostream& operator<<(std::ostream& out,const Complex& c);

最好包含<iostream>而不是两个单独的标题<istream><ostream>

答案 2 :(得分:0)

您忘记添加

using namespace std;