tablica obiektów

Odpowiedz Nowy wątek
2006-12-16 13:56
Ferari GT
0

Jak sobie robię tablice obiektów w ten sposób:

CKlasa tablica[20];

to jak teraz stworzyc ten obiekt z parametrami, tak jak się to robi z pojedyńczymi obiektami. Chodzi o to jak na tablicy wykonać taką operację:

CKlasa zmienna(NULL, "hello");

Pozostało 580 znaków

2006-12-16 14:44
0

tablica[index] = CKlasa(NULL, "hello");


Pozdrawia DzieX

int getRandomNumber() { return 4; }

Pozostało 580 znaków

2006-12-16 14:48
0

Utworzyć CKlasa *tab[20]; Potem przejść przez całą tablice i za pomoca operatora new utworzyc obiekty.

Bądź: dokonać inicjalizacji agregatowej, pochodzącej z C;
CKlasa tab[2] = {CKlasa(0, "jeden"), CKlasa(0, "I tak dalej")};

Tak jak kolega wyżej, jest łatwiej. Tego to ja nie znałem... ciekawe...

PS: Czemu musze się zawsze spóźniać. Czemu zakładasz 3 te same tematy?

Pozostało 580 znaków

2006-12-16 14:59
Ferari GT
0

ale w sposobie DzieXa to cały kod będzie tak wyglądał:

CKlasa tablica[20];
tablica[0] = CKlasa(NULL, "Hello")
tablica[1] = CKlasa(NULL, "SASASA")
...

?

I jeszcze odnośnie wskaźników to czy mogę zrobić coś takiego:

delete tablica[20];

i czy wtedy będzie to tak samo jakbym niszczył wszystko po kolei?

Pozostało 580 znaków

2006-12-16 15:06
0

Ad1. Nom będzie. Taki urok tablic. Oczywiści jeśli masz te naspisy (podawane w drugim parametrze) jakoś oddzielnie, to wystarczy w pętli to puścić.

Ad.2
Piszesz delete[] tablica;

Ale tylko gdy było alokowane przez new!


Pozdrawia DzieX

int getRandomNumber() { return 4; }

Pozostało 580 znaków

2006-12-16 15:36
Ferari GT
0

A co to znaczy, że była alokowana przez new?

Pozostało 580 znaków

2006-12-16 15:53
0

Wiesz jak zaalokować dynamicznie tablicę? Jeśli nie to najpierw poczytaj jakąś książkę.


Pozdrawia DzieX

int getRandomNumber() { return 4; }

Pozostało 580 znaków

2006-12-16 21:04
Ferari GT
0

Nie wiem, czy wiem, ale jak mi pokażesz kod to będe wiedział czy wiem o co w inm biega ;).

Pozostało 580 znaków

2006-12-16 21:30
Ferari GT
0

Czyli robię tak:

int liczba = 10;
CKlasa *tablica = new CKlasa[liczba];
tablica[0] = new CKlasa(NULL, "Jeden ;D")
tablica[0] = new CKlasa(NULL, "Dwa O_o")
delete[] tablica;

?

Pozostało 580 znaków

2006-12-16 21:44
Ferari GT
0

Czyli robię tak:

int liczba = 10;
CKlasa *tablica = new CKlasa[liczba];
tablica[0] = new CKlasa(NULL, "Jeden ;D")
tablica[0] = new CKlasa(NULL, "Dwa O_o")
delete[] tablica;

?

Pozostało 580 znaków

2006-12-16 22:49
0

Dokładnie. Tylko stawiaj średniki. No i pod ten sam indeks przypisujesz inne obiekty, przez co tracisz adres pierwszego z nich i co za tym idzie masz wyciek pamięci. Chyba, że są to literówki ;)

Oczywiście co do szybkości zapisania tych instrukcji to nic nie zyskujesz w porównaniu do poprzedniego zapisu, bo nadal musisz klepać wszystkie 10 elementów z palca.


Pozdrawia DzieX

int getRandomNumber() { return 4; }

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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