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