我正在超载<<和>> 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
答案 0 :(得分:23)
在任何地方使用std::ostream
和std::istream
。
ostream
和istream
位于名称空间std
答案 1 :(得分:4)
使用命名空间std
中定义的类型的限定名称friend std::ostream& operator<<(std::ostream& out,const Complex& c);
最好包含<iostream>
而不是两个单独的标题<istream>
和<ostream>
答案 2 :(得分:0)
您忘记添加
using namespace std;