Witam, mam problem z dynamiczną alokacją pamięci (tak przypuszczam :-) ).
Program się kompiluje, ale niepoprawnie wyświetla dane, będące składnikami klasy (char *), które są właśnie alokowane dynamicznie. Piszę w dev'ie 4.9.9.2. Działa dobrze, jeśli zamiast tablicy obiektów tworzonej operatorem new definiujemy zmienną automatyczną. Ale ja potrzebuję dynamicznej tablicy obiektów.
Kod skróciłem do niezbędnego minimum. Ktoś ma jakiś pomysł? Bo ja już cały dzień się z tym męczę i nie mogę dojść co jest z tym kodem nie tak.
#include <iostream>
using namespace std;
class Osoba {
public:
char * nazwisko;
char * imie;
Osoba(char * n, char * iw);
~Osoba();
};
Osoba::Osoba(char * n = "", char * i = "")
{
nazwisko = new char[strlen(n) + 1];
strcpy(nazwisko, n);
imie = new char[strlen(i) + 1];
strcpy(imie, i);
cout << "Konstruktor: "
<< imie << " "
<< nazwisko << endl;
}
Osoba::~Osoba()
{
cout << "Destruktor\n";
delete [] nazwisko;
delete [] imie;
}
int main()
{
Osoba * o;
o = new Osoba[1];
o[0] = Osoba("Kowalski", "Jan");
cout << o[0].nazwisko << endl;
cout << o[0].imie << endl;
delete [] o;
return 0;
}
Z góry dzięki za wszelką pomoc.