Funkcja zaprzyjaźniona - nie nadpisuje zmiennych

Funkcja zaprzyjaźniona - nie nadpisuje zmiennych
DA
  • Rejestracja: dni
  • Ostatnio: dni
  • 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: dni
  • Ostatnio: dni
0

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

Wtf? Wyjaśnij to.

DA
  • Rejestracja: dni
  • Ostatnio: dni
  • 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. :/

pingwindyktator
  • Rejestracja: dni
  • Ostatnio: dni
  • 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);

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.