Funkcja zaprzyjaźniona - nie nadpisuje zmiennych

Funkcja zaprzyjaźniona - nie nadpisuje zmiennych
DA
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 2 lata
  • Postów:53
0

Witam,
próbuję dodać funkcję zaprzyjaźnioną, która mogłaby nadpisać zmienne prywatne z klasy. Niestety nie działa. Kod ogólnie dotyczy gry saper i staram się dodać możliwość wyboru poziomu (wielkość mapy i ilość min) i chciałem to zrobić funkcją zaprzyjaźnioną (program na uczelnie, więc nie mogę inaczej). Czy mógłby ktoś zerknąć w kod i zobaczyć czemu funkcja levelEasy (od linii 302) będąca zaprzyjaźniona dla klasy saper nie nadpisuje zmiennych: xlength, ylength, level (od linii 22)? :/

Kod programu: http://wklej.org/id/1750684/

Endrju
  • Rejestracja:około 22 lata
  • Ostatnio:ponad rok
0

(program na uczelnie, więc nie mogę inaczej)

Wtf? Wyjaśnij to.


"(...) otherwise, the behavior is undefined".
DA
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 2 lata
  • Postów:53
0
Endrju napisał(a):

(program na uczelnie, więc nie mogę inaczej)

Wtf? Wyjaśnij to.

Emmm znaczy muszę po prostu użyć funkcji zaprzyjaźnionych. W sumie to gdziekolwiek w tym programie, ale nie mam innego pomysłu na użycie ich. :/

Endrju
Całkowity bezsens.
pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Kraków
  • Postów:1055
2

A jak domyślnie przekazywane są obiekty do funkcji?
Odpowiedź: przez wartość, czyli są kopiowane.
Czyli po kolei:
przekazujesz sapera do levelEasy, robiona jest jego kopia, na tej kopii jest cos robione, poźniej kopia jest usuwana. W funkcji nie zmieniasz oryginału, modyfikujesz jedynie lokalną zmienną, kopie.
Rozwiązanie:

Kopiuj
void levelEasy (saper &s);

do not code, write prose
edytowany 1x, ostatnio: pingwindyktator

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.