Wpis z mikrobloga

Zaprzyjaźniona funkcja widzi atrybuty prywatne, ale nie może ich zmieniać

Czemu niby nie może? Jak zaprzyjaźniona to zaprzyjaźniona. To jak są gettery i settery to się w ogóle nie powinno to inna sprawa.
@Javkens: Jak by coś to error by się przydał.
Wogóle to masz dwia te same operatory zdefiniowane, ten dógi to w drógą stornę >>
@Javkens: Zaprzyjaźnienie deklaruje się w ciele klasy względem funkcji/klasy.

hej ja jestem klasy A i deklaruję, że operator strumienia jest moim przyjacielem, więc może grzebać mi w membrach


Osobliwość klasy musi mieć zadeklarowanego przyjaciela, a nie jakaś osobliwość trzecia by o tym ustalała. Natomiast operator dla strumieni z twoim typem definiuje się w scope globalnym.
Poczytaj o terminach deklaracja vs. definicja.
@lionbest: Rzeczywiście przeoczyłem, że są dwa te same operatory, jednak nadal wyświetla mi taki błąd przy kompilacji error: cannot bind 'std::istream {aka std::basicistream}' lvalue to 'std::basicistream&&'|
@Javkens: Musisz podać więcej kodu. Z tego co podałeś nic nie wynika. Jak wywołujesz ten operator? Bo chyba komplator próbuje coś forwardnąć ale nie ma odpowiedniej referencji.
@Javkens: Dalej masz #!$%@? kierunek operatora.
Dobra doczytałem że to problem gcc i ten błąd po prostu może znaczyć że nie znalazł twojego przeładowania. Eh kiedy te Concepty wejdą do C++ (,)
@Javkens: napewno masz zdefiniowane std::istream & operator>>(std::istream & os, Complex0 & c) zamiast std::iostream & operator<<(std::iostream & os, Complex0 & c) ?
pozatym do istream nie można zapisywać ;-D twoja funkcja dalej jest #!$%@? ;-F