Tworzenie wielu obiektów

1

Witam ponownie,
kolejny raz rozpisuję swą wersję space invaders, jendak napotkałem problem... tym razem postawiłem na pełną obiektowość kodu. Jednak pojawił się nowy problem, może jednak przejde do kodu, który zobrazuje problem.

 
Klasa obiekt(int s);
//Kod się wywołuje bez problemu

Klasa obiekt[5](int s);
//kod się nie wykonuje z błedem 

Jeśli problem jest jednym z tych, o który wystarczy zapytać wuja google mi skończył się inewncja twórcza względem hasła do wyszukiwania.

Jak zwykle pozdrawiam.

EDIT komentarz słuszny przykład był bezsensowny

Bardzo prosze o to błąd jaki widzę

 Error	1	error C2075: 'bullet' : array initialization needs curly braces	d:\projekty\abyssum\abyssum.cpp	59	1	Abyssum
0

Nie działa, ide podpowiada, iż spodziewało się ujrzeć po klasa[5] średnik...
drugi sposób nie przechodzi przez myśl VS

1
Klasa* obiekt(int s);

lub bodajże w C++11 istnieje takie cudo:

array<Klasa, 5> obiekt(int s);
1

Funkcja zwracająca pointer do tablicy 5-elementowej wygląda tak:

Klasa (*obiekt(int s))[5];

ale ta składnia jest na tyle upierdliwa, że najczęściej pisze się po prostu

Klasa* obiekt(int s);

czyli zwraca wskaźnik na nieokreśloną liczbę elementów.

Poza tym nie jestem pewien, czy zwracanie tablicy to dobry pomysł. Łatwo o pomyłkę i wyciek pamięci.

0

Dzięki za pomoc, a ja używałem tego co znałem i zobaczyłem w pewnym kursie, a kolejne rozwiązania poznaje się wraz z coraz większym skomplikowanie problemów.
Jeszcze raz dzięki za pomoc.

1

Klasa obiekt(int s);
//Kod się wywołuje bez problemu

On się nie wywołuje. To jest deklaracja funkcji! Gdybyś spróbował ją wywołać to otrzymałbyś błąd. Chyba że została również zdefiniowana.

Klasa obiekt[5](int s);

Zastanawiam się, co chciałeś osiągnąć i dochodzę do tego samego wniosku, co Azarien. Funkcja może zwrócić wskaźnik do tablicy, ale nie może zwrócić tablicy przez wartość!
Zazwyczaj stosuje się wskaźniki zdegradowane do postaci wskaźnika do pierwszego elementu tablicy (tak jak ma to miejsce w drugim sposobie podanym przez Azariena).

Czy int[] tablica jest lepszym rozwiązaniem od int tablica[]?
Każda składni stwarz problemy jak się jej nie zna.

Co się tyczy dziwności takich deklaracji:

Klasa (*obiekt(int s))[5];

Jest jeszcze typedef:

typedef Klasa (*TAB1x5)[5];
TAB1x5 obiekt(int s);
//i wywołanie
TAB1x5 t5 = obiekt(5);//zamiast: int (*t5)[5] = obiekt(5);
  • teraz normalnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1