[C++] tablica obiektów z tablicami wskaźników

Forum dotyczące ogólnie pojętego programowania - algorytmów, struktur danych, narzędzi programistycznych, itp - głównie w kontekście komputerów PC.
ODPOWIEDZ
Awatar użytkownika
Luminofor
Użytkownik
Posty: 1375
Rejestracja: 27 lis 2007, 17:17
Lokalizacja: Polska

[C++] tablica obiektów z tablicami wskaźników

Post autor: Luminofor » 18 sie 2011, 23:54

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:

Kod: Zaznacz cały

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.

gjakubow
-
Posty: 13
Rejestracja: 19 lip 2007, 23:59
Lokalizacja: Sopot

Post autor: gjakubow » 19 sie 2011, 17:38

Witam,
chyba nie zrozumiałem w czym dokładnie masz problem,
ale postaram się odpisać tak jak zrozumiałem twój problem:
możesz zadeklarować tablice obiektów i żeby uzyskać wskażnik na obiekt użyć operatora dereferencji & np.:
int tab[5];
int *aPtr = &tab[0];
albo użyć new i delete tak jak w poniższym kawałku kodu:

Kod: Zaznacz cały

class AnotherClass
{
public:
	int zxc;
};

class Car
{
public:
	enum { EL_NUM = 20 };

	AnotherClass anotherClassesArr[EL_NUM];
	AnotherClass* anotherClassPtrArr[EL_NUM];

	Car(void);
	virtual ~Car(void);
};

Car::Car(void)
{
	for (int i = 0; i < EL_NUM; i++) {
		anotherClassPtrArr[i] = new AnotherClass();
	}
}

Car::~Car(void)
{
	for (int i = 0; i < EL_NUM; i++) {
		delete anotherClassPtrArr[i];
	}
}

w każdym razie jeśli nie o to Tobie chodziło, to spróbuj pokazać swój niedziałający kod, to postaramy się znaleźć błąd.

pozdrawiam, Grzegorz

Thud
-
Posty: 42
Rejestracja: 02 sie 2011, 22:47
Lokalizacja: Górny Śląsk

Post autor: Thud » 19 sie 2011, 19:51

Co dokładnie wywala? Masz SIGFAULT, przeciek pamięci?

Najlepiej właśnie jakbyś pokazał kod.

Awatar użytkownika
Luminofor
Użytkownik
Posty: 1375
Rejestracja: 27 lis 2007, 17:17
Lokalizacja: Polska

Post autor: Luminofor » 19 sie 2011, 19:58

Panowie chyba problem rozwiązany, próbowałem czytać z -1 indeksu tablicy, jak by jednak to nie to to jeszcze się odezwę, dzięki za pomoc.

ODPOWIEDZ