• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Tworzenie obiektu klasy w innej klasie

Object Storage Arubacloud
0 głosów
1,056 wizyt
pytanie zadane 26 marca 2017 w C i C++ przez Mikusbombro Użytkownik (990 p.)

Istnieje klasa Gracz i klasa Fight. Gracz posiada metodę menu_glowne, które zawiera menu główne. Po wybraniu opcji 1 powinien zostać utworzony nowy obiekt klasy Fight, a później powinna zostać wywołana metoda tej klasy walcz. Powinny również do klasy Fight posłane być atrybuty klasy Gracz. Mam pytanie, czy aby to działało, to te klasy muszą się przyjaźnić, czy wystarczy, że tylko klasa Gracz może się przyjaźnić z metodą walcz? Próbowałem wielu rozwiązań, ale mi nie działa. Próbowałem użyć takiej deklaracji:

case 1:
{
       Fight f1;
       f1.walcz(Gracz g1);
       break;
}

Nie działa, wyskakuje expected primary-expression before g1. A może to jest poprawne, tylko źle ustawiłem mechanizm przyjaźni? Bardzo prosiłbym o pomoc, z góry dziękuję.

1 odpowiedź

0 głosów
odpowiedź 26 marca 2017 przez draghan VIP (106,230 p.)
O ile metoda Figrht::walcz nie jest prywatna, żadna deklaracja przyjaźni nie jest potrzebna. Popełniasz błąd, próbując skonstruować nowy obiekt klasy Gracz na liście argumentów metody f1.walcz.

Pokaż nagłówek tej metody.

Na marginesie: metoda 'menu_glowne' w klasie Gracz brzmi trochę jak widelec wbudowany w kubek. Niby się da, ale gdzie w tym sens?
komentarz 26 marca 2017 przez Mikusbombro Użytkownik (990 p.)
Czy to znaczy, że aby wysłać argumenty klasy Gracz nie mogę wysyłać całego obiektu, tylko po kolei wszystkie potrzebne argumenty?
komentarz 26 marca 2017 przez draghan VIP (106,230 p.)

Nie rozumiem. Pozwolę sobie siebie zacytować:

Pokaż nagłówek tej metody.

Chodzi oczywiście o wspomnianą metodę Fight::walcz().

komentarz 26 marca 2017 przez Mikusbombro Użytkownik (990 p.)
Niestety nagłówka nie pokaże, bo wysyłałem to z innego komputera, niż z tego na którym był kod, a to dlatego że ten ma internet a tamten nie ma. A we wcześniejszym komentarzu chodziło mi o to, czy tak trzeba to zrobić:

Fight f1;

f1.walcz(jeden_atrybut, drugi_atrybut...)

Chyba nie zrozumiałeś, dlatego że przez przydatek napisałem argumenty, zamiast atrybuty.
komentarz 26 marca 2017 przez draghan VIP (106,230 p.)

Przypuszczam, że Fight::walcz przyjmuje referencję do obiektu Gracz (jak poniżej), ale pewności nie mam więc zapytałem.

void Fight::walcz(Gracz &g);

Nie możesz utworzyć nowego obiektu Gracz kiedy podajesz argumenty metody. Zgaduję, że masz gdzieś już utworzony obiekt Gracz o nazwie g1 (jeśli nie, to musisz go stworzyć przed wywołaniem f1.walcz). Wtedy wywołanie metody wygląda po prostu tak:

Fight f1;
f1.walcz(g1);

 

komentarz 26 marca 2017 przez Mikusbombro Użytkownik (990 p.)
OK, dzięki, może zadziała

Podobne pytania

0 głosów
0 odpowiedzi 1,048 wizyt
pytanie zadane 31 lipca 2016 w C i C++ przez Pac Plus Mądrala (5,560 p.)
0 głosów
1 odpowiedź 460 wizyt
pytanie zadane 25 stycznia 2017 w C i C++ przez robertwe Gaduła (4,620 p.)
0 głosów
2 odpowiedzi 1,868 wizyt
pytanie zadane 18 października 2016 w C i C++ przez sh1nen Obywatel (1,570 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,962 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...