Przeciążenie operatora strumienia wyjścia

0

Witam

Czy istnieje możliwość przeciążenia strumienia wyjścia w taki sposób aby wynik dla poniższego kodu był następujący:

1 linijka: "Time error!"
2 linijka: wynik

Chodzi mi o to, że np dla

 cout<<"b= "<<wynik;

Na wyjściu otrzymuję :

b= Time error!wynik

poprawne wyjście natomiast powinno wyglądać tak :

Time error!
b=wynik

 
class MayCal{
protected:
double liczba;
public:

    MayCal():liczba(0.0){}

    MayCal(double liczba2):liczba(liczba2){}

    friend ostream & operator<< (ostream & wyjscie, const MayCal & a);

};
ostream & operator <<(ostream & wyjscie, const MayCal &a){
    if(a.liczba>2012){
    cout<<"Time error!";
    }
wyjscie<<a.liczba;
return wyjscie;

}

0

W taki sposób jak to opisałeś: nie, nie ma takiej możliwości.
cout<<"b= "<<wynik; to to samo co:

cout<<"b= ";
cout<<wynik;

Jak widać pierwsza linijka jest zupełnie niezależna od twojej implementacji i nie możesz zmodyfikować jej zachowania. Więc co byś nie robił to ta pierwsza instrukcja wypisze na ekran b= .

0
ostream &operator<<(ostream &wyjscie,const MayCal &a)
  {
    if(a.liczba>2012) wyjscie<<"Time error!"<<endl;
    return wyjscie<<a.liczba;
   }

1 użytkowników online, w tym zalogowanych: 0, gości: 1