Tôi đang quá tải các toán tử < < và >> trong C++, nhưng không thể biên dịch được.lỗi: ‘ostream’ không đặt tên là loại
Thông báo lỗi là: "lỗi:‘ ostream ’không nêu tên" Tại sao tôi gặp lỗi này? Làm thế nào để sửa chữa nó?
#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
Cũng đề nghị đọc: [? _Why là “using namespace std;” coi thực hành xấu _] (http://stackoverflow.com/q/1452721/1870232) (nếu bạn vô tình kết thúc bằng 'using namespace std;' cho các bản dựng của bạn! – P0W
Tôi đã quá tải >> đúng không? Tôi đã sử dụng nó trong main.cpp của mình: Complex c(); cin >> c; Nhưng nó sẽ không biên dịch thành – user2741941
@ user2741941 Bạn đã sử dụng 'std :: istream & operator >> (std :: istream & in, Complex & c) {...}'? – P0W