我寫了下面的代碼:朋友的方法是行不通的
class Osoba{
private:
string imie, nazwisko, kolorOczu;
friend void Dziecko::coutall();
public:
Osoba(string imie, string nazwisko, string kolorOczu):imie(imie), nazwisko(nazwisko), kolorOczu(kolorOczu){};
void coutall(){
cout << "Imie: " << imie << endl; //
cout << "Nazwisko: " << nazwisko << endl;
cout << "Kolor oczu: " << kolorOczu << endl;
}
};
class Dziecko: public Osoba{
private:
string nazwaPrzedszkola, choroba;
typedef Osoba super;
public:
Dziecko(string imie, string nazwisko, string kolorOczu, string nazwaPrzedszkola, string choroba):super(imie, nazwisko, kolorOczu), nazwaPrzedszkola(nazwaPrzedszkola), choroba(choroba){};
void coutall(){
cout << super::imie; // this one gets underlined.
cout << "Nazwa przedszkola: " << nazwaPrzedszkola << endl;
cout << "Choroba: " << choroba << endl;
}
};
這行帶有下劃線:
cout << super::imie;
它說,它是不可訪問。但在我看來,這是 - 「友好」這種方法。 我嘗試了Dziecko類的前向聲明 - 也沒有工作。我究竟做錯了什麼?
OP期望'朋友'聲明來解決這個問題。所以問題是,爲什麼不呢? – juanchopanza
頁面狀態'除非基類中的朋友聲明明確授予訪問權限,否則派生類不能使用基類的私有成員,這是OP似乎遇到的問題。 – Nbr44
所以你說我應該朋友全班?所以不可能只派生一個派生類的一個方法? – tomdavies