Problem z dziedziczeniem.

0

Witam

Mam pytanko dot. poniższego problemu.
Samochod dziedziczy w sposób prywatny classe pojazd.
Dlaczego mówiąc klasie samochod, ze funkcja przestawLicznik jest zaprzyjaźniona nie mam dostępu do prywatnej składowej licznik??

 
#include <iostream>

using namespace std;


struct pojazd
{
    int licznik;
};

class samochod : private pojazd
{
friend void przestawLicznik(pojazd *any);
};


void przestawLicznik(pojazd *any)
{
    any->licznik = 0;
}



int main()
{
pojazd p1;
    p1.licznik = 88;
    cout << p1.licznik << endl;
    przestawLicznik(&p1);
    cout << p1.licznik << endl;

samochod s1;

    //s1.licznik = 999;
    //cout << s1.licznik << endl;
   przestawLicznik(&s1);
    //cout << p1.licznik << endl;
    //cout << s1.licznik << endl;

return 0;
}

Pozdraiwam
Paweł

0

Funkcja przestawLicznik oczekuje argumentu typu pojazd. Aby przekazać jej samochód trzeba najpierw go zrzutować na typ pojazd czego funkcji main nie wolno zrobić (ze względu na dziedziczenie typu private), stąd error.

1 użytkowników online, w tym zalogowanych: 0, gości: 1