Cześć, próbuję ogarnąć operowanie obiektami za pomocą funkcji ze wskaźnikami jako argumentami. Stworzyłem takie coś:
#include <iostream>
#include <string>
using namespace std;
class klasa_C
{
public:
int liczba;
string napis;
int *wskaznik;
klasa_C()
{
liczba=1;
napis="czesc";
wskaznik=new int;
*wskaznik=10;
}
~klasa_C()
{
delete wskaznik;
}
};
void powieksz(klasa_C **pointer, int &rozmiar)
{
klasa_C *nowy;
nowy=new klasa_C[rozmiar*2];
for(int i=0; i<rozmiar; i++)
{
*(nowy+i)=**(pointer+i); //wykrzacza siê tu
}
delete [] *pointer;
*pointer=nowy;
rozmiar*=2;
}
int main()
{
int rozmiar=5;
klasa_C *wskaznik_na_obiekt;
wskaznik_na_obiekt=new klasa_C[rozmiar];
for(int i=0; i<rozmiar; i++)
{
cout<<"Liczba: "<<(wskaznik_na_obiekt+i)->liczba<<endl;
cout<<"Napis: "<<(wskaznik_na_obiekt+i)->napis<<endl;
cout<<"Adres wskaznika: "<<(wskaznik_na_obiekt+i)->wskaznik<<endl;
cout<<"Liczba pod wskaznikiem: "<<*((wskaznik_na_obiekt+i)->wskaznik)<<endl;
cout<<endl;
}
powieksz(&wskaznik_na_obiekt, rozmiar);
cout<<endl<<endl;
for(int i=0; i<rozmiar; i++)
{
cout<<"Liczba: "<<(wskaznik_na_obiekt+i)->liczba<<endl;
cout<<"Napis: "<<(wskaznik_na_obiekt+i)->napis<<endl;
cout<<"Adres wskaznika: "<<(wskaznik_na_obiekt+i)->wskaznik<<endl;
cout<<"Liczba pod wskaznikiem: "<<*((wskaznik_na_obiekt+i)->wskaznik)<<endl;
cout<<endl;
}
delete [] wskaznik_na_obiekt;
return 0;
}
Nie rozumiem dlaczego program się sypie. Prosiłbym też o łopatologiczne wytłumaczenie, z góry dziękuję.