2013-10-25 164 views
0

在我的課definiton我有以下友元函數:操作符<<和operator >>重載函數

 friend ostream& operator << (ostream& out, const Person& p1); 

     friend istream& operator >> (ostream& out Person& p1); 

在我implentation文件:

 ostream& operator << (ostream& out, const Person& p1) 
     { 
     out<< p1.age; //this is a private variable 
     } 

     istream& operator << (istream& in, Person& p1) 
     { 
     in >> p1.age; //this is a private variable 
     } 

但是當我編譯,我得到一個錯誤,說「ostream」不命名類型的朋友ostream &運算符(ostream &出,const人& p1).. istream的同樣的事情。由於這些是朋友功能,他們可以訪問私有變量,即年齡,所以問題是什麼?

+3

的您是否嘗試過排位賽'ostream'用'std'命名空間,例如'的std :: ostream'? – dreamlax

+2

您需要包含''和''。包括''也可以。 – juanchopanza

+1

你的函數也應該返回流。即'退出;' – Chemistpp

回答

1

因此,首先,你的函數應該返回的東西,所以:

ostream& operator << (ostream& out, const Person& p1) 
    { 
    return out<< p1.age; //this is a private variable 
    } 

istream& operator << (istream& in, Person& p1) 
    { 
    return in >> p1.age; //this is a private variable 
    } 

你應該記得添加include <iostream>頭。和using namespace std;

和最重要的一個錯字

friend istream& operator >> (istream& out Person& p1); 
相關問題