class Time {
friend void display(Time &, Date &); // 聲明 display
};
class Date {
friend void display(Time &, Date &); // 聲明 display
};
void dispaly(Time & t, Date & d) { // 定義時寫成 dispaly (少一個 'i')
cout << d.month << "/" << d.day << "/" << d.year << endl;
cout << t.hour << ":" << t.minute << ":" << t.sec << endl;
}
error: 'void dispaly(Time&, Date&)' is not a friend of 'Time'
error: 'void dispaly(Time&, Date&)' is not a friend of 'Date'
函數名拼寫不一致:類內聲明 display,類外定義 dispaly。編譯器視為兩個不同函數,類外定義的 dispaly 自然不是友元。
void display(Time & t, Date & d) { // 改正拼寫
cout << d.month << "/" << d.day << "/" << d.year << endl;
cout << t.hour << ":" << t.minute << ":" << t.sec << endl;
}
friend void display(Time&, Date&); 僅是聲明,承諾「存在一個名為 display 的全局函數,允許訪問本類私有成員」。display(t, d),無需對象。