2016-03-09 64 views
0

請不要投票或將此問題標記爲所有我在其他問題中看到的答案都不適用於我。朋友功能找不到私人會員

我創建了一個叫contact的類來存儲關於聯繫人的信息。我試圖實現一個運營商< <輸出所有信息,所以我不得不使它成爲朋友功能。這個問題是我無法訪問任何類的成員函數。我的代碼如下:

contact.h:

class contact { 
    long id; 
    string first; 
    string middle; 
    string last; 
    string company; 
    string home; 
    string office; 
    string email; 
    string mobile; 
    string street; 
    string city; 
    string state; 
    long zip; 
    string country; 
    vector<contact> affiliates; 
public: 
    // output and input 
    friend ostream &operator<<(ostream &, const contact &); 
}; 

contact.cpp:

... 
ostream &operator<<(ostream &os, contact &rec) { 
    print(os, rec.id); 

    return os; 
} 
... 

正如你看到的,函數原型是完全一樣的,我不是封閉在命名空間內的類,這沒有理由讓操作員無法訪問成員變量。這是我的原型的問題嗎?任何幫助,將不勝感激。謝謝。

+0

呃.. @安頓薩文已經回答了我的問題。無論如何,儘管 –

回答

3

operator<<的聲明和定義其實是不是一樣。在friend聲明中,第二個參數是const contact &,在定義中它只是contact&

所以這個定義實際上和這個類中的一個friend聲明無關,並定義了另一個不是contact的朋友。

+0

哦,我..我甚至沒有意識到我做到了。歡呼你:D –