Funkcja zaprzyjaźniona - błąd przy próbie wpisania danych do pól prywatnych

0

Dlaczego mimo, że dałem funkcję zaprzyjaźnioną wczytajX to potem pokazuje błąd przy próbie wpisania danych do pól prywatnych przez to funkcje ?

 #include <iostream>

using namespace std;

class X
{
    int a;
    friend class Y;
    friend void wczytajX(const X& x,int liczba);
};
class Y
{
    int b;
    Y(const X& x) : b(x.a){};
};
void wczytajX(const X& x,int liczba)
{
    x.a = liczba;
}
int main()
{
X p;
wczytajX(p,3);

return 0;
}
2

Bo nie umiesz czytać błędów kompilatora?

prog.cpp: In function 'void wczytajX(const X&, int)':
prog.cpp9: error: assignment of member 'X::a' in read-only object
x.a = liczba;
^

read-only object

0

Ale to właśnie na tym miało polegać, że do pola prywatnego chcę coś wpisać. To tak nie można ?

0

Wpisuj sobie co chesz, spoko, ale jak będziesz miał w rękach coś modyfikowalnego.
albo to, albo popij z profesorkiem i namów go na zmianę wartości PI.

0

Prywatne != stałe. Wywal const przed X& i będziesz mógł.

void wczytajX(const X& x,int liczba)

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