2017-05-07 45 views
-2
#include <iostream> 
#include <sstream> 
using namespace std; 

class Rupee{ 
    private: 
     int number; 
     int number2; 
     int number3; 
    public: 
    Rupee() 
    { 

    } 

    friend ostream &operator<<(ostream &os, const Rupee &e); 
    friend istream &operator>>(istream &is, const Rupee &e); 
}; 


    ostream& operator << (ostream & os ,const Rupee &e) 
    { 

     os<<endl << e.number << endl; 
     os << e.number2<< endl; 
     os << e.number3<< endl; 
     return os; 
    } 

    istream& operator >> (istream & is ,const Rupee &e) 
    { 

     is>>e.number>>e.number2>>e.number3; 
     return is; 
    } 



int main() 
{ 
    Rupee o1; 

    cin >> o1; 
    cout << o1; 
} 

你好, 我試圖讓一個重載運營商<<。當我運行程序時,該程序不運行" << ",但工作正常" >> "。 我在哪裏做錯了?我使用正確的istream和ostream類的重載功能?重載「>>」嘩啦啦程序

+2

如何做你的編譯器設法編譯提取操作的實現:它應該拋出一個錯誤:'istream的&運算符>>(istream的&is,const Rupee&e)'function ... – WhiZTiM

+2

這段代碼根本無法編譯。 –

+0

它沒有這樣做。是否存在這個問題? –

回答

1

從評論者注意到的編譯問題來自將一個const引用傳遞給>>操作符。值被讀入變量,因此使它常量會導致編譯器錯誤,const關鍵字應該被刪除:

friend istream &operator >> (istream &is, Rupee &e); 

istream& operator >> (istream & is, Rupee &e) 

做出這些改變的程序編譯。對我來說運行正常時,Visual Studio 2015年以後這裏。您可能要暫停退出的程序讀取但是輸出:

cin.ignore(); 
cin.get(); 
+0

哦..讓我試試。 –

+0

現在工作正常。感謝:) –

+0

@MuhammadYasirJaved請從這篇文章中瞭解編譯時和運行時錯誤之間的區別,以及編譯時錯誤消息易於訪問並且供人類閱讀和思考的事實。沒有合理的編譯器輸出*「你的代碼不起作用。」*。 – LogicStuff