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

question-closed Jak zadeklarować metodę przyjmującą tablicę klas przez referencję?

Object Storage Arubacloud
0 głosów
331 wizyt
pytanie zadane 24 stycznia 2019 w C i C++ przez MamFarta Użytkownik (740 p.)
zamknięte 24 stycznia 2019 przez MamFarta

Cześć, w swoim projekcie mam następujący problem.

Nie wiem w jaki sposób zadeklarować metodę przyjmującą tablicę klas przez referencję, nie potrafię czegoś takiego wygoolgować. Czy ktoś mógłby mi powiedzieć jak zadeklarować taką metodę?

void Metagra::generateLevel(Przeciwnik (&enemy)[20]){
   // Dalsza metoda
}
class Metagra
{
public:
    void generateLevel(Przeciwnik[20]&);
};

 

komentarz zamknięcia: Otrzymanie odpowiedzi w komentarzu
komentarz 24 stycznia 2019 przez j23 Mędrzec (194,920 p.)
A po co chcesz przekazywać tablicę przez referencję?
komentarz 24 stycznia 2019 przez MamFarta Użytkownik (740 p.)
chcę za pomocą metody z klasy Metagra ustawiać przeciwników na planszy. Aby to zrobić w funkcji main muszę mieć zadeklarowaną tablicę Przeciwnik[20], a następnie przekazać ją do tej metody. W późniejszej fazie projektu metoda będzie przyjmowała numer poziomu i na jej podstawie modyfikowała zmienne poszczególnych Przeciwników.
komentarz 24 stycznia 2019 przez j23 Mędrzec (194,920 p.)

No ale to nie tłumaczy po co ta referencja. Nie ważne...

Tak daj:

void generateLevel(Przeciwnik (&)[20]);

 

komentarz 24 stycznia 2019 przez MamFarta Użytkownik (740 p.)

Okej, wszystko gra, lecz mam jeszcze mały problem jak taką metodę wywołać.

Metagra meta;
Przeciwnik enemy[20];
meta.generateLevel(Przeciwnik enemy[20]);

Coś takiego wyrzuca błąd, a próbowałem też innych kombinacji. Kompliator zwraca błąd: error: expected primary-expression before 'enemy'|

komentarz 24 stycznia 2019 przez j23 Mędrzec (194,920 p.)
meta.generateLevel(enemy);

 

komentarz 24 stycznia 2019 przez MamFarta Użytkownik (740 p.)

Okej, nie ważne 

meta.generateLevel((&enemy)[20]);

Załatwia sprawę

Edit: Jednak nie, okienko wyrzuca błąd.

Niemniej, dzięki wielkie za pomoc

komentarz 24 stycznia 2019 przez adrian17 Ekspert (344,860 p.)

Dokładnie tak jak j23 napisał.

meta.generateLevel(enemy);

 

komentarz 24 stycznia 2019 przez MamFarta Użytkownik (740 p.)
Tak, odpowiedź od j23 działa, nie działa moje wywołanie powyżej. Szkoda, że napisane w komentarzu bo dałbym najlepszą odpowiedź.

Podobne pytania

+1 głos
2 odpowiedzi 823 wizyt
pytanie zadane 7 października 2016 w C i C++ przez Sidzej Użytkownik (850 p.)
+1 głos
1 odpowiedź 109 wizyt
pytanie zadane 24 października 2016 w C i C++ przez Burgonys Początkujący (440 p.)
0 głosów
2 odpowiedzi 353 wizyt

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...