Tablica obiektów z tablicami wskaźników

0

Witam,
Mam taki problem:

Mam sobie klasę car, w której jest 50-elementowa tablica wskaźników na obiekty innej klasy.

Jak poprawnie utworzyć w programie tablicę obiektów typu car, aby te wskaźniki (te stablicowane w obiektach klasy car w tablicy) się nie sypały? Bo zauważyłem, że czasami są zupełnie bzdurne i psują mi cały program.

Aktualnie ratuję się takim działającym rozwiązaniem:

const int NR_OF_CARS = 10;
car c1,c2,c3,c4,c5,c6,c7,c8,c9,c10;
car cars[NR_OF_CARS] = {c1,c2,c3,c4,c5,c6,c7,c8,c9,c10};

Które niestety nie jest idealne bo co jak przyjdzie mi zwiększyć rozmiar tablicy do 1000 elementów?

Próbowałem już zabaw z new'em ale na próżno.

0
Leogict napisał(a)

Mam sobie klasę car, w której jest 50-elementowa tablica wskaźników na obiekty innej klasy.

Jak poprawnie utworzyć w programie tablicę obiektów typu car, aby te wskaźniki (te stablicowane w obiektach klasy car w tablicy) się nie sypały? Bo zauważyłem, że czasami są zupełnie bzdurne i psują mi cały program.

Aktualnie ratuję się takim działającym rozwiązaniem:

const int NR_OF_CARS = 10;
car c1,c2,c3,c4,c5,c6,c7,c8,c9,c10;
car cars[NR_OF_CARS] = {c1,c2,c3,c4,c5,c6,c7,c8,c9,c10};

Ja tu nie widzę tablicy wskaźników na car. Widzę tablicę obiektów car.

Leogict napisał(a)

Które niestety nie jest idealne bo co jak przyjdzie mi zwiększyć rozmiar tablicy do 1000 elementów?

Próbowałem już zabaw z new'em ale na próżno.

Tablicę tworzysz normalnie:

car     cars[BIGNUM];

for ( i = 0; i < BIGNUM; i++ ) {
    cars[i] = new car("Nissan Lamera");
};

Pamiętaj żeby później posprzątać.

0
Leogict napisał(a)

(...) aby te wskaźniki (te stablicowane w obiektach klasy car w tablicy) się nie sypały? Bo zauważyłem, że czasami są zupełnie bzdurne i psują mi cały program.(...)

Ze wskaźnikami trzeba po prostu uważać. Jeżeli dany wskaźnik nie wskazuje na nic konkretnego to ustawiaj tam NULL. Będziesz mógł sprawdzić czy wskaźnik wtenczas na coś wskazuje. Staraj się utrzymać zasadę, że na jeden obiekt wskazuje jeden wskaźnik w programie(chyba że wiesz co robisz ;)) Jak przestaniesz używać obiektu utworzonego przez new, użyj instrukcji delete do zwolnienia pamięci. Na ten temat można pisać dużo i jeszcze więcej, ale nie pokazałeś kodu, który Ci "psuje" aplikację.

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