2014-10-21 22 views
8

adı yok < < ve >> işlecini aşırı yüklüyorum, ancak derleyemiyor.hata: ‘ostream’ türünde bir

Hata iletisi: "error:‘ ostream "bir isim vermiyor" Neden bu hatayı aldım? Nasıl düzeltilir? ad std tanımlanan türleri için

#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 

cevap

19

Kullanım std::ostream ve std::istream içermesi de daha iyi olurdu.

ostream ve istream Ayrıca okuma önerdi

+0

ad std içindedir: [? _Why “using namespace std;” dır kötü bir uygulama olarak kabul _] (http://stackoverflow.com/q/1452721/1870232) (eğer 'build names std; 'kullanarak yapılarınız için yanlışlıkla kazandınız! – P0W

+0

>> doğru olarak aşırı yükledim mi? Bunu main.cpp'de kullandım: Karmaşık c(); cin >> c; – user2741941

+0

@ user2741941 std :: istream & operator >> kullandıysanız (std :: istream & in, Kompleks & c) {...} '? – P0W

4

Bize nitelikli isimleri

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

O <iostream> yerine iki ayrı başlıklarını <istream> ve her yerde <ostream>

İlgili konular