Dynamiczna tablica obiektów klasy.

0

Witam,
naszukałem się na ten temat dość sporo ale nie mogę znaleźć rozwiązania więc szukam pomocy u specjalistów :)

Otóż piszę program który ma za zadanie stworzyć dynamiczną tablicę obiektów klasy o rozmiarze podanym przez użytkownika:

 
	int ilu;
	Student *s;
	cout<<"Ilu studentow chcialbys dodac? ";
	cin>>ilu;
	s=new Student [ilu];

W związku z tym stworzyłem konstruktor, który wczytywał dane z klawiatury i wszystko działało bez zarzutu.
Następnie chciałem rozwinąć program aby na prośbę użytkownika powiększyć tablicę o jeden element.

 
	Student *p;
	p=new Student[ilu];	// wartość ilu przesyłam już powiększoną o 1
	for (int i=0; i<ilu-1; i++)
		p[i]=s[i];	//za to pewnie zbiore opierdziel ;>
	p[ilu].wyp();	// funkcja wypelniajaca pola

I tu pojawił się pierwszy problem. Przy tworzeniu nowej tablicy do której zamierzałem przepisać dane z poprzedniej tablicy uruchamiał się konstruktor.
W takim wypadku wypełnianie do wypełniania tablicy stworzyłem funkcję, a konstruktor pozostawiłem pusty. Ale przy wypełnianiu ostatniej części tablicy pojawia się błąd (dopiero przy nazwisku). Spodziewałem się prędzej błędu na wskaźniku, chyba ze ma to związek z tym że string jest tablicą znaków ?

 
class Student
{
private:
	string imie;
	string nazwisko;
	int indeks;
	float srednia;
	string *przedmiot;
	int ile;
					// reszta to funkcje

W związku z tym mam kilka pytań, czy da się przy tworzeniu (przez new) nowej tablicy obiektów uruchomić inny konstruktor?
Jak przekazywać wskaźnik z jeden tablicy do drugiej aby po skasowaniu pierwszej z nich on dalej istniał ?
Oraz jak rozwiązać problem zawieszania się programu?

Wszelkie komentarze i rady mile widziane

0

p=new Student[ilu];
taka tablica ma elementy od 0 do ilu-1, jesteś pewien że nie miało potem być:
p[ilu-1].wyp();
?

0

Faktycznie, dzięki ogromne ;)

A wiesz może czy przy p=new Student[ilu]; moge wybrać z którego konstruktora skorzystać jeśli miałbym np dwa?

0

Nie możesz, można odpalić tylko domyślny konstruktor. Ogólnie pomysł z pobieraniem danych od użytkownika w konstruktorze nie jest dobrym pomysłem.

0

Dzięki za szybką odpowiedź i pomoc

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